1

我有一个基本的 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 服务。

4

1 回答 1

0

看来您的代码非常接近地 遵循此处找到的代码。

你应该能够使用这样的东西:

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 的调用将导致线程终止。

于 2013-07-07T15:28:37.903 回答