2012-09-12 89 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