Windows Server是否关闭线程池中的项目

时间:2014-03-26 16:07:06

标签: c# parallel-processing threadpool

我想使用.net Threadpool或Task库,但如果机器关闭,我无法找到有关线程发生情况的任何信息。我的假设是,所有已添加但尚未完成的任务都将丢失。但是,也许我对Parallel任务或Threadpool都有错误的想法。

情景很简单。我添加了一堆任务:

Task.Factory.StartNew(doSomeWork);

然后有人关机这台机器。如果没有完成任务怎么办?机器是等待还是只是关机?有没有办法告诉它等到它关闭?

1 个答案:

答案 0 :(得分:1)

您的应用需要专门收听系统事件,指示系统正在关闭,但它负责解决如何处理此问题。

在一天结束时,无法阻止关机以完成任务(也不应该)。如果您的应用程序需要确保所有任务都完成,那么它需要以某种方式记录哪些任务已完成,哪些任务仍处于待处理状态,以便在重新启动时可以恢复。

请参阅this MSDN article on System Events for details of handling shutdown notifications