いくつかのメンテナンス タスクを実行する C# アプリケーションがあります。少しずれていてもそれほど重要ではありませんが、ほぼ毎時間実行する必要があります。また、誰もログインしていない Win2003 サーバーで実行する必要があります。
基本的に、Windows サービスを作成する必要があるかどうか、また、そうである場合、Thread.Sleep() がスレッドを 1 時間一時停止する適切な方法であるかどうか、またはスレッドがアイドル状態のままであることを確認するためのより良い方法があるかどうか疑問に思います。サーバーの負荷は?(別名、スピンロックの最も反対のものは何ですか)
代替手段は Windows タスク スケジューラですが、それがサーバーでの使用に適しているかどうかはわかりません。なぜなら、a) スケジュールを app.config ではなくタスク スケジューラに保存する必要があるからです。b) サービスを簡単に制御できないからです。開始/停止/再起動および c) Windows ユーザーの資格情報が、サービス MMC スナップインに入力したときと同じくらい安全かどうかわかりません。
あなたの意見は何ですか?アイドル状態の Service を持つことは可能であり、良いことですか?それとも、代わりにタスク スケジューラをお勧めしますか?