我有一个基本的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服务。
答案 0 :(得分:0)
您的代码似乎非常密切地遵循找到的代码here。
你应该能够使用这样的东西:
protected override void OnStop()
{
// flag to tell the worker process to stop
serviceStopped = true;
// give it a little time to finish any pending work
workerThread.Join(new TimeSpan(0,2,0));
}
对.Join的调用将导致线程终止。