【问题标题】:How to stop windows service that contains multiple threads in C#?如何在 C# 中停止包含多个线程的 Windows 服务?
【发布时间】:2014-08-18 21:16:06
【问题描述】:

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

【问题讨论】:

标签: c# multithreading


【解决方案1】:

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

  • 如果您使用 Thread 类,请使用 volatile bool 字段查看是否请求取消
  • 如果您使用 Task 类,请使用 Task 取消
  • 使用等待句柄(AutoResetHandle 或ManualResetHandle)和Thread
  • 取消BackgrounWorker

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多