指定された時間が経過したときにイベントを発生させる方法を教えてください。
たとえば、私はこの時間を持っています:
08:00 12:00 20:30 23:00
この時期に開催されるイベントを購読するにはどうすればよいですか?
次のアプローチを試してください。
DateTime target = ...
int interval = (int)(target - DateTime.Now).TotalMilliseconds;
var timer = new System.Timers.Timer(interval);
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Enabled = true;
私がアプリケーションに使用した方法は、数分ごとに起動するタイマーを作成することでした。目標時間に近づくと(例:現在の時間+間隔>目標時間)、間隔は短くなります。
その特定のアプリケーションでは、正確な精度はそれほど重要ではなかったので、間隔を500ミリ秒より小さくしませんでした。
最後に、あなたが十分に近づいていると思うとき、あなたはその時に必要な仕事をします。
Quartz.Netを試してください。
指定された時間に必要なものを実行できます。そのうちの 1 つはイベントの発生です。
System.Timers.Timer を使用する
詳細については、MSDNを参照してください。
イベントがオフになったら、イベントを発生させ、タイマーを再プログラムして、次のイベントのために再びオフにします。