ホームページ > バックエンド開発 > C++ > 毎日のタスクを確実に実行するために C# Windows サービスをスケジュールするにはどうすればよいですか?

毎日のタスクを確実に実行するために C# Windows サービスをスケジュールするにはどうすればよいですか?

DDD
リリース: 2025-01-10 10:11:42
オリジナル
779 人が閲覧しました

How Can I Schedule a C# Windows Service to Run a Daily Task Reliably?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート