2

特定の時間に 24 時間ごとにメソッドを呼び出すタイマーを作成したいと思います。Windows スケジューラを使用してこれを行うのではなく、コード内で行う必要があります。現在使用しているコードは次のとおりです。

DateTime now = DateTime.Now;
DateTime today = now.Date.AddHours(16);
DateTime next = now <= today ? today : today.addDays(1);

Systems.Threading.TimerCallback callback = new TimerCallback(DisplayMessage);
Systems.Threading.Timer timer = new System.Threading.Timer(callback, null, next - now, TimeSpan.FromHours(24));

私の問題はnext、現在の時刻から数分しか離れていない場合、コードが機能し、DisplayMessage(). 時間差が数分を超える場合、コードは機能せず、例外もクラッシュも何も発生しません。ログ ステートメント、メッセージ ボックス、およびブレーク ポイントを の中に配置して、 がいつ呼び出されDisplayMessage()たかを正しく確認できるようにしましたが、うまくいきませんでした。DisplayMessage()

4

2 に答える 2