我想使用.net Threadpool或Task库,但如果机器关闭,我无法找到有关线程发生情况的任何信息。我的假设是,所有已添加但尚未完成的任务都将丢失。但是,也许我对Parallel任务或Threadpool都有错误的想法。
情景很简单。我添加了一堆任务:
Task.Factory.StartNew(doSomeWork);
然后有人关机这台机器。如果没有完成任务怎么办?机器是等待还是只是关机?有没有办法告诉它等到它关闭?
答案 0 :(得分:1)
您的应用需要专门收听系统事件,指示系统正在关闭,但它负责解决如何处理此问题。
在一天结束时,无法阻止关机以完成任务(也不应该)。如果您的应用程序需要确保所有任务都完成,那么它需要以某种方式记录哪些任务已完成,哪些任务仍处于待处理状态,以便在重新启动时可以恢复。
请参阅this MSDN article on System Events for details of handling shutdown notifications。