如何在C#中停止包含多个线程的Windows服务?

时间:2014-05-20 11:07:21

标签: c# multithreading

我正在使用system.Thread.Timer类来创建一个线程。在停止主窗口服务的同时,我希望在Windows服务的OnStop事件中优雅地关闭所有这些子服务线程?

1 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。简而言之,您希望“取消”或停止您的主题正在进行的工作。为此,您可以使用以下之一:

  • 如果您使用volatile bool
  • ,请使用Thread字段查看是否已请求取消
  • 如果您使用Task
  • ,请使用Task取消
  • 将等待句柄(AutoResetHandleManualResetHandle)与Thread
  • 一起使用
  • 取消BackgrounWorker

不要使用thread.Abort,了解更多搜索“线程中止是邪恶的”