C# Windows サービスで毎日のタスクを効率的にスケジュールする
C# Windows サービスで反復的なタスクを実行するには、慎重な検討が必要です。一般的なアプローチは、Thread.Sleep() を使用して、時間のロールオーバーをチェックすることです。ただし、より効率的で信頼性の高いソリューションが存在します。
推奨される方法: タイマーを使用する
Thread.Sleep() に依存せず、サービス内で Timer を使用することをお勧めします。このタイマーは、たとえば 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) { // 执行每日任务 _lastRun = DateTime.Now; } }</code>
タイマーを使用すると、毎日のクリーンアップ タスクを一貫して効率的に実行しながら、Thread.Sleep() の欠点を回避できます。
以上がC# Windows サービスで毎日のタスクを効率的にスケジュールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。