计时器 - 页 6 12345678 新评论 TheXpert 2012.05.17 12:47 #51 Yurich: 中断是指在执行OnTick的时候,一个更重要的事件,如OnTimer,已经到来。OnTick被暂停,OnTimer代码被执行,然后OnTick又继续运行。 哦,亲爱的。这是个可怕的梦。 Vladimir Gomonov 2012.05.17 12:52 #52 pusheax: OnTimer, OnTick, OnTrade...这些都是中断。 我起初也是这么想的。但也有变种。例如,我们不能用interrupts这个词来标记某个OnTimer,并知道它将在事件发生的时刻被精确地调用,从而中断对任何其他事件的处理(根据MSDOS的单线程方案--保存堆栈、处理中断、恢复堆栈、传递控制)。 这种方案可以用更简单的方法解决很多问题。例如,由这个方案调用的OnTick看起来相当不错。这里有一些微妙之处--需要对重复的输入进行处理(例如两个间隔很小的刻度),但一般来说是可以解决的。 Slava 2012.05.17 12:53 #53 TheXpert: 该死的地狱。这是个恶梦。 实际上Yurich描述的是经典意义上的中断,而不是OnTick、OnTimer中断处理。 pusheax 2012.05.17 12:55 #54 例如,如果有人在OnTick处理程序中设置Sleep(100000);那么现在OnTimer、OnTrade根本就没有生命力了? Vladimir Gomonov 2012.05.17 12:59 #55 TheXpert: 遗憾的是。是的,这是个可怕的梦。不,这并不可怕。关于如何避免刘海的问题,有一些久经考验的古老方案。但这仍然是一个梦想。 我不相信开发商会这样做。 尽管好处是不可否认的。例如,我可以在OnTimer中运行后台计算,频率不高(大约5秒一次),持续时间为半个定时器周期。而且,也不需要担心处理ticks的问题,它可以直接中断后台计算,然后正确地将其返回到正确的位置。而现在把它放在一个单独的图表上,比在滴答作响的同一线程中正确处理它要容易。虽然在同一条线上会有足够的时间给所有的人。 Slava 2012.05.17 13:00 #56 pusheax: 例如,如果有人在OnTick处理程序中设置Sleep(100000);,那么OnTimer和OnTrade 是否就没有生命力了?计时器的事件,而新的时间点将被忽略。不要混淆Tick、Trade、Timer事件和它们的处理程序OnTick、OnTrade、OnTimer。 Vladimir Gomonov 2012.05.17 13:02 #57 pusheax: 例如,如果有人在OnTick处理程序中设置Sleep(100000);,那么OnTimer、OnTrade 将完全没有生命力? 现在,这正是它的真实情况。但自杀并不是一件困难的事情。 更糟糕的是,当我的屏幕上有一个信息框,而我正在厨房里喝茶。尤里奇提出了一个很好的观点。 TheXpert 2012.05.17 13:04 #58 stringo: 实际上Yurich描述的是经典意义上的中断,而不是OnTick、OnTimer中断处理。我理解他所描述的情况。在一个单线程的应用程序中同步数据和中断访问是白痴的极致。 pusheax 2012.05.17 13:07 #59 MetaDriver: 这就是现在的情况。但自杀并不困难。 当屏幕上有一个信息框,而我在厨房里喝茶的时候,情况会更糟。尤里奇提出了一个很好的观点。 啊,现在我明白了,Timer事件 本身会发生,但它对OnTimer的处理会被推迟到OnTick完成。 Документация по MQL5: Программы MQL5 / События клиентского терминала www.mql5.com Программы MQL5 / События клиентского терминала - Документация по MQL5 Yury Kulikov 2012.05.17 13:10 #60 pusheax: 这可能是它的工作方式。 如果只是这样的话 :) 12345678 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
中断是指在执行OnTick的时候,一个更重要的事件,如OnTimer,已经到来。OnTick被暂停,OnTimer代码被执行,然后OnTick又继续运行。
OnTimer, OnTick, OnTrade...这些都是中断。
该死的地狱。这是个恶梦。
遗憾的是。是的,这是个可怕的梦。
不,这并不可怕。关于如何避免刘海的问题,有一些久经考验的古老方案。
但这仍然是一个梦想。 我不相信开发商会这样做。 尽管好处是不可否认的。
例如,我可以在OnTimer中运行后台计算,频率不高(大约5秒一次),持续时间为半个定时器周期。而且,也不需要担心处理ticks的问题,它可以直接中断后台计算,然后正确地将其返回到正确的位置。而现在把它放在一个单独的图表上,比在滴答作响的同一线程中正确处理它要容易。虽然在同一条线上会有足够的时间给所有的人。
例如,如果有人在OnTick处理程序中设置Sleep(100000);,那么OnTimer和OnTrade 是否就没有生命力了?
计时器的事件,而新的时间点将被忽略。
不要混淆Tick、Trade、Timer事件和它们的处理程序OnTick、OnTrade、OnTimer。
例如,如果有人在OnTick处理程序中设置Sleep(100000);,那么OnTimer、OnTrade 将完全没有生命力?
实际上Yurich描述的是经典意义上的中断,而不是OnTick、OnTimer中断处理。
我理解他所描述的情况。
在一个单线程的应用程序中同步数据和中断访问是白痴的极致。
这就是现在的情况。但自杀并不困难。 当屏幕上有一个信息框,而我在厨房里喝茶的时候,情况会更糟。尤里奇提出了一个很好的观点。
这可能是它的工作方式。