为什么在.net 4.5中更改了UnobservedTaskException的逻辑?

时间:2016-07-21 15:26:29

标签: c# task-parallel-library unobserved-exception

因为.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();
}

令人困惑,看起来很奇怪。 有人对此有所了解吗?

0 个答案:

没有答案