特定の時間に 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()