TaskScheduler.UnobservedTaskException - 加注前的高延迟

时间:2012-09-12 13:48:46

标签: c# exception task

我正在使用基于任务的(TPL)线程模型。启动我的应用程序(WPF)时,我注册 TaskScheduler.UnobservedTaskException 以显示消息。

但是,如果引发异常(egTask.Factory.StartNew(()=> throw new Exception());)在引发UnobservedTaskException事件之前需要相当长的时间(3-10秒)

我希望立即提出(或者至少非常快),对这可能是什么情况有任何想法?

此致

1 个答案:

答案 0 :(得分:2)

这是因为该线程的终结器尚未运行。由于这发生在垃圾收集中,这种非确定性。另外,CLR如何确定是立即抛出它还是想检查任务的结果或者调用Wait()并自己观察异常?

如果启用Break on First Chance Exceptions,则会在调试时抛出它。

它会被传播回加入线程,保证。如果您使用的是.NET 4.0,则您的进程将终止。如果您使用的是.NET 4.5,则不会