Windows サービスを作成するように言われた方法は次のとおりです。
Thread serviceThread = new Thread(new Thread(runProc())
Boolean isRunning = true;
if (_isRunning)
{
serviceThread.Start();
}else
close and log service
void runProc()
{
while(_isRunning)
{
//Service tasks
}
_isRunning = false;
}
これはこれまでのところうまくいきましたが、一度に最大 2 時間までの大きな休憩を含むサービスを作成する必要があります。また、タイマーの使用を開始したため、無限ループで実行されている runProc() を何度も何度も停止する以外に何も行われていません。
私の質問は、その while(_isRunning) 無限ループに Thread.Sleep(big number) を入れるのは悪い習慣だと読んだことがありますが、これは本当ですか? この場合、絶え間なく実行され、大量のリソースを使用するループを回避するにはどうすればよいですか? 現在、ループで文字通り何も行われていません。すべてタイマーの tickevent で処理されます。ループがある唯一の理由は、runProc の終了を停止することです。
どうもありがとうございました。