プロパティが変更されたかどうかをミリ秒ごとにチェックし、最大遅延でイベントを実行するタイマーを使用せずに、システムクロックで秒、分、時間などが変更されたときに、delegate
またはC#で実行する方法です。event
ミリ秒。
したがって、ポーリングを避け、特定の時間にイベントを発生させたいと思います。
質問が次の場合:「1秒/分/時間ごとにデリゲートを実行するにはどうすればよいですか?」
分と時間の間隔で、このSOの質問の私の答えに示されているようなことを行うことができます。
これはかなり正確なはずですが、ミリ秒単位では正確ではありません。
2番目の間隔では、単純な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);