根据 MSDN :
如果不等待传播异常或访问的任务 其异常属性,根据 垃圾收集任务时的.NET异常策略。什么时候 允许异常冒泡回到连接线程,然后 任务可能会在之后继续处理某些项目 则引发异常。
我假设任务类有一个引发异常或类似事件的终结器。但是,为什么下面这些似乎是无限期运行的呢?
long collectionCount = 0; Task.Factory.StartNew(() => { throw new NotImplementedException(); }); while (true) { GC.Collect(); GC.WaitForPendingFinalizers(); ++collectionCount; }
自.Net Framework 4.5以来, unobserved exceptions from Task s no longer crash the process when they are finalized
Task