C# Windows サービスでのタスクのスケジュール
C# で記述された Windows サービスでタスクを毎深夜に実行する必要がある場合は、Thread.Sleep()
や時間ベースのチェックに頼るのではなく、タスク スケジューラを使用することをお勧めします。
効果的なアプローチは、サービスにタイマーを実装することです。タイマーは定期的に (10 分ごとなど) 起動し、最後の実行以降に日付が変更されたかどうかを確認する必要があります。新しい日付が検出された場合、クリーンアップ プロセスの実行中にタイマーが一時停止され、クリーンアップ プロセスが 1 日に 1 回のみ実行されるようになります。
<code class="language-csharp">private Timer _timer; private DateTime _lastRun = DateTime.Now.AddDays(-1); protected override void OnStart(string[] args) { _timer = new Timer(10 * 60 * 1000); // 每10分钟 _timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); _timer.Start(); //... } private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // 忽略时间,只比较日期 if (_lastRun.Date < DateTime.Now.Date) { // 在运行清理任务时停止计时器 _timer.Stop(); // // 执行清理任务 // _lastRun = DateTime.Now; _timer.Start(); } }</code>
以上がC# Windows サービスで毎日のタスクをスケジュールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。