C#でシステムクロック変更ティックを取得する
質問
システムクロックの秒、分、時間などが変更されたときに、C#で delegate
または event
を実行する方法は、プロパティが変更された場合にミリ秒ごとにチェックし、最大ミリ秒の遅延でイベントを実行するタイマー。
したがって、ポーリングを避け、特定の時間にイベントを発生させたいと思います。
解決
質問が次の場合:"秒/分/時間ごとにデリゲートを実行するにはどうすればよいですか?
分と時間の間隔については、このSOの質問の私の答えに示されているようなことを行うことができます:
これはかなり正確でなければなりませんが、ミリ秒まで正確ではありません。
秒間隔では、単純な1秒間隔のタイマーを使用します。ユーザーの観点から、アクションがxx:xx:xx.000またはxx:xx:xx.350で実行される場合、大きな違いはないと思います。
他のヒント
SystemEvents.TimeChanged 。これは、システムクロックが変更されると起動します。
間隔を(1000-DateTime.Now.Millisecond)に設定して、フォームアプリでこれを解決しました
_timer1 = new System.Windows.Forms.Timer();
_timer1.Interval = (1000 - DateTime.Now.Millisecond);
_timer1.Enabled = true;
_timer1.Tick += new EventHandler(updateDisplayedTime);
そしてイベントハンドラーでドリフトを防ぐために間隔をリセットします。
<handle event>
_timer1.Interval = (1000 - DateTime.Now.Millisecond);
所属していません StackOverflow