如何处理基本Windows服务中OnStop方法中的工作线程

本文关键字:OnStop 服务 方法 线程 工作 Windows 何处理 处理 | 更新日期: 2023-09-27 18:21:27

我有一个基本的Windows服务,它执行一些任务,这些任务在无休止的循环中定期执行:"ExecuteServiceWorkerMethod()"。我通过一个工作线程从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服务

如何处理基本Windows服务中OnStop方法中的工作线程

您的代码似乎非常接近这里的代码。

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

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