根据MSDN:
如果您不等待传播异常或访问的任务 它的异常属性,异常根据提升而升级 任务被垃圾收集时的.NET异常策略。什么时候 然后,允许异常冒泡回到连接线程 任务可能会继续处理之后的某些项目 提出异常。
我假设Task类有一个引发异常的终结器。但是为什么以下似乎无限期地运行?
long collectionCount = 0;
Task.Factory.StartNew(() => { throw new NotImplementedException(); });
while (true)
{
GC.Collect();
GC.WaitForPendingFinalizers();
++collectionCount;
}
答案 0 :(得分:2)
自.Net Framework 4.5以来,unobserved exceptions from Task
s no longer crash the process when they are finalized。这意味着您的代码在.Net 4.5(或更新版本)上运行,因此您将获得新的非崩溃行为。