【发布时间】:2009-04-01 10:51:00
【问题描述】:
我有一个 Windows 服务,它使用生产者/消费者队列模型和多个工作线程处理队列外的任务。这些任务可能会运行很长时间,即使不是几小时也可能是几分钟,并且不涉及循环。
我的问题是关于处理服务停止以优雅地结束这些工作线程上的处理的最佳方式。我在另一个SO question 中读到,使用 thread.Abort() 是糟糕设计的标志,但似乎服务 OnStop() 方法在服务终止之前只给了有限的时间来完成。我可以在 ThreadAbortException 的捕获中进行足够的清理(不存在状态不一致的危险),因此在工作线程上调用 thread.Abort() 对我来说似乎没问题。是吗?有哪些替代方案?
【问题讨论】:
-
有源代码示例的最终解决方案吗?
标签: .net multithreading windows-services