[解決済み] C#のWindowsサービスが毎日タスクを実行するようにスケジュールするにはどうすればよいですか?
2023-05-10 23:58:40
質問
私は C# (.NET 1.1) で書かれたサービスを持っており、毎晩真夜中にいくつかのクリーンアップ動作を実行させたいと思っています。私はすべてのコードがサービス内に含まれていることを維持しなければならないので、これを達成するための最も簡単な方法は何ですか?これを達成する最も簡単な方法は何ですか?
Thread.Sleep()
を使用して、時間がロールオーバーするのをチェックしますか?
どのように解決するのですか?
Thread.Sleep()は使用しません。スケジュールされたタスク (他の人が言及したように) を使用するか、サービス内でタイマーをセットアップして、定期的に (たとえば 10 分ごとに) 起動し、最後に実行してから日付が変更されたかどうかをチェックします。
private Timer _timer;
private DateTime _lastRun = DateTime.Now.AddDays(-1);
protected override void OnStart(string[] args)
{
_timer = new Timer(10 * 60 * 1000); // every 10 minutes
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Start();
//...
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
// ignore the time, just compare the date
if (_lastRun.Date < DateTime.Now.Date)
{
// stop the timer while we are running the cleanup task
_timer.Stop();
//
// do cleanup stuff
//
_lastRun = DateTime.Now;
_timer.Start();
}
}
関連
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み] 指定されたサービスは削除するようにマークされています」エラーの解決方法
-
[解決済み] ファイルが存在しない場合、Windowsサービスをアンインストールするにはどうすればよいですか?
-
[解決済み] スケジュールされたジョブを設定する?
-
[解決済み] Windowsでサービスを削除するにはどうすればよいですか?
-
[解決済み] 実行ファイルからWindowsサービスを作成する
-
[解決済み] Windows コマンドプロンプトを使用して、Windows サービスをインストールしますか?
-
[解決済み] Windowsサービスのデバッグを容易にする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ここで「要求URIに一致するHTTPリソースが見つかりませんでした」となるのはなぜですか?
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み] 関数を終了するには?
-
[解決済み】「namespace」なのに「type」のように使われる。
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。