我有一個基本的Windows服務,它執行一些任務,這些任務在無限循環中定期執行:「ExecuteServiceWorkerMethods()」。 我開始通過工作線程的無限循環從下面的的OnStart()方法:如何處理基本Windows服務中的OnStop方法中的工作線程?
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服務。
您的兩次睡眠時間對於暫停和停止有多長時間? DO WORK部分需要多長時間?你能顯示你當前的OnStop方法嗎? – hatchet
ExecuteServiceWorkerMethods()是一個無限循環。 在DO工作中,各種方法都是定期執行的。 sleepTime變量當前爲300毫秒。 目前我在OnStop()方法中使用workerThread.Abort()。 – RuneHansen
可能的重複[如何在不使用計時器的Windows服務中產生循環](http://stackoverflow.com/questions/2032808/how-to-have-a-loop-in-a-windows-service-不使用定時器) –