OnTimerのイベントを50ミリ秒ごとに繰り返し、
ストップボタンを押したときにイベントを止めたいと考えています。
しかしストップボタンを押したときに
Timer1.Enabled := False;
としても、イベントが止まってくれません。
どうすればよいのでしょうか?
どなたか教えてください。お願いします。
タイマーさん
>OnTimerのイベントを50ミリ秒ごとに繰り返し、
これでは、他のイベントの入る隙間がないのでは?
ずいぶん前のことですが、TTimerのIntervalを100ミリ秒以下にすると
正常に動作しなくなることがあるという情報を見たことがあります。
マルチメディアタイマーの使用を検討されてはいかがですか?
OnTimerイベントで、
Application.ProcessMessages;
を実行しておけば止まるかと思います。
ただ、タイマは53ms以下は取得できなかったはず(win9x系だけかも)ですので、ふぐちゃんさんの言うようにマルチメディアタイマを使用するか、スレッドにしたほうがよろしいかと思います。
ご回答ありがとうございます。
さらにお聞きしたいのですが、マルチメディアタイマを使用すると
HOtaさんがおっしゃったような”他のイベントの入る隙間がない”状態を
回避することができるのでしょうか?
またにしのさんに伺いたいのですが、
Application.ProcessMessages;は
OnTimerの最後に入れればよいのでしょうか?
何度も質問して申し訳ありませんが、よろしくお願いいたします。
マルチメディアタイマって、
Delphi6に対応しているやつもありますか?
Application.ProcessMessagesはどの位置でも良いと思います。
[下記ヘルプから引用]
ProcessMessages メソッドは,アプリケーションがメッセージキューを処理できるよう,その実行を一時的に停止します。
ツイート | ![]() |