C# Windows サービスの毎日のタスクのスケジュール
C# Windows サービスに毎日タスクを実行させるには、複数の方法から選択できます。 Thread.Sleep()
メソッドの使用はお勧めしません。より良いアプローチは、スケジュールされたタスクを使用するか、サービスにタイマーを実装することです。
カスタム ソリューションの場合、サービスでタイマーを設定できます。このタイマーは一定の間隔 (たとえば 10 分ごと) で起動する必要があります。コードがトリガーされると、最後に実行されてから日付が変更されたかどうかを確認できます。その場合は、クリーンアップ タスクの実行中にタイマーを停止できます。タスクが完了すると、タイマーを再開できます。
次のコード スニペットは、このアプローチを示しています。
<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>
この設定により、Thread.Sleep()
を使用せずに毎日深夜にクリーンアップ タスクが確実に実行されます。
以上が毎日のタスクを確実に実行するために C# Windows サービスをスケジュールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。