2012-09-12 51 views
1

我正在使用基于任务的(TPL)线程模型。当启动我的应用程序(WPF)时,我注册TaskScheduler.UnobservedTaskException以显示消息。但是,如果引发异常(egTask.Factory.StartNew(()=> throw new Exception());)在UnobservedTaskException事件发生之前,需要相当长的时间(3-10秒) 。TaskScheduler.UnobservedTaskException - 提高之前的高延迟

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

问候

回答

2

这是因为该线程终结尚未运行。由于这与垃圾收集一起发生,因此这是非确定性的。另外,CLR如何决定是立即抛出还是要检查任务的结果或致电Wait()并亲自观察异常?

如果您启用了第一次机会异常中断,它将在调试时引发。

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

+0

如果我清理任务是确定性的。谢谢 :) – Jaster