タイマー - ページ 7

 
Yurich:
すらも)
そうでなければ、OnTickハンドラでグローバル変数を 変更できるのは、タイマーイベントが発生してプログラムが切り替わったときだけという中途半端な説明にならざるを得ないからだ。
 
MessageBoxを 軽率に使わないでください。
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / MessageBox
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / MessageBox
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / MessageBox - Документация по MQL5
 
pusheax:
この方が開発者にとっては楽でしょう。そうでなければ、タイマーイベントが発生してプログラムが切り替わったときに、OnTickハンドラでグローバル変数を 途中からしか変更できないことを説明しなければならないからです。
そのために短い「途切れないブロック」があるのです。割り込みはとにかく完了するのを待ち、その後中断します。
 
Yurich:
すらも)
その通りです。
 
TheXpert:
何も考えずにMessageBoxを 使うのはやめよう。
そのため、YuTradeではイベントをスキップしないように、2つのスレッドを作る必要がありました。そして、割り込みがあれば、すべてが1つのスレッドになります。
 
MetaDriver:
そのために短い「途切れないブロック」があるのです。いずれにしても完了するのを待ってから割り込みをかける。

しかも、そんなことはまったくわからず、中断してデータが完全に処理されないかもしれないという前提で書いていました。

処理の開始と終了のフラグを設定する。

 
Yurich:
割り込みとは、OnTickが実行されているときに、OnTimerなどのより重要なイベントが到来した場合です。OnTickの実行を一時停止し、OnTimerのコードを実行した後、再度OnTickを実行します。
全てにおいて、何らかのマルチスレッドが必要です。
 
Yurich:
そして、割り込みがあれば、すべてが同じスレッドになる。
ああ、悪い言い分だ。今のままでいい--。
 
pusheax:

しかも、全く知らなかったので、中断してデータが処理しきれない可能性がある状態で書きました。

処理の開始と終了にフラグを立てました。

ほら、もう半分くらいまで来ているから、安全に入れるよ。

;)

 
Interesting:
幼稚園全般で、少なくともある程度のマルチスレッドは必要です。
もしかしたら、そのうち開発者が追加してくれるかもしれません。CreateThread(NULL,0,CaptureThread,0,CREATE_SUSPENDED,&ThreadId); ?