我有一个
Windows服务,使用生产者/消费者队列模型与多个工作线程处理队列中的任务.这些任务可以很长时间运行,如果不是几个小时,按照很多分钟的顺序,不要涉及循环.
我的问题是处理服务停止以优雅地结束对这些工作线程的处理的最佳方式.我已经读过另一个SO question,使用thread.Abort()是坏的设计的标志,但似乎服务OnStop()方法只有在服务终止之前完成有限的时间.我可以在ThreadAbortException的catch中进行足够的清理(没有不一致状态的危险),所以调用thread.Abort()在工作线程上似乎对我来说很好.是吗?什么是替代品?