無限ループで定期的に実行されるいくつかのタスクを実行する基本的な Windows サービスがあります:「ExecuteServiceWorkerMethods()」。以下のように、OnStart() メソッドからワーカー スレッドを介して無限ループを開始しています。
OnStart(string[] args)
{
workerThread = new Thread(ExecuteServiceWorkerMethods);
workerThread.Name = "ServiceWorkerThread";
workerThread.IsBackground = false;
workerThread.Start();
}
OnStop() メソッドのワーカー スレッドをどうするか迷っています。
私の無限ループは次のようになります。
private void ExecuteServiceWorkerMethods()
{
while (!serviceStopped)
{
DO WORK....
while (servicePaused)
{
Thread.Sleep(sleepTimeMillisecondsWhileServicePaused);
}
Thread.Sleep(sleepTimeMillisecondsWhileServiceNotStopped);
}
}
これはすべて非常に基本的なことです。Windows サービスを開始および停止できるようにしたいだけです。