ここに私が目指しているものの概要があります:
開始時に、そのサーバー上の特定のデータベースで使用可能なキューをチェックする Windows サービスがあります。キューが見つかった場合は、処理を開始する必要があります (非常に単純で簡単です)。キューが見つからない場合は、サービスが 15 分間「スリープ」してから「再起動」する必要があります。キューが見つかった場合は、処理を開始します。それ以外の場合は、さらに 15 分間スリープしてから「再起動」します。
どうすればこれを行うことができますか?System.Threading.Sleep メソッドを見てきましたが、明らかにコーディングが非常に貧弱です。スレッドをスリープすると、連続するメソッドの実行がブロックされることを理解しています。これは問題ありません。スリープの後、サービスは同じメソッドを呼び出して処理を「再開」します。
System.Threading.Timer も調べましたが、システムがサービスを完全に停止することがあります。イベント ビューアーには何らかの例外に関連するエラーがいくつかありますが、サービスを手動で開始すると、キューの処理が自動的に開始されます。これは、コーディングに問題がないことを示しています。
サービス スレッドを 15 分間中断してから、処理メソッドを再度呼び出す最善の方法は何ですか。利用可能なキューを継続的にチェックするループにとどまる必要があります。見つかったら処理を行い、何も見つからない場合は 15 分間スリープしますか?