因为.net 4.5中的know UnobservedTaskException不会使应用程序崩溃。
使开发人员更容易编写基于的异步代码 任务,.NET Framework 4.5更改默认的异常行为 对于未观察到的异常。虽然未观察到的异常仍然存在 在UnobservedTaskException异常中,进程不会终止 默认情况下。相反,异常由运行时后处理 无论事件处理程序是否遵守,都会引发事件 例外。可以配置此行为。从.NET开始 在Framework 4.5中,您可以使用配置元素恢复到 .NET Framework 4的行为并终止进程:
好的,假设微软决定改变多线程使用异常的经验,但为什么它只适用于tpl呢? 为什么多线程机制的其他部分没有改变? 例如,以下代码仍会使应用程序崩溃
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem(state => { throw new Exception(); });
Console.ReadLine();
}
令人困惑,看起来很奇怪。 有人对此有所了解吗?