2012-05-09 25 views
1

當我懷疑TaskAction失敗時,我曾經只是坐在等待AggregateException終於拋出,所以我可以挖掘到InnerException。然而,最近我注意到,通過嘗試調整發起失敗的表單的大小,我可以強制顯示錯誤。什麼觸發器最終在WinForms中拋出一個AggregateException?

兩個問題:

  1. 有沒有更好的方式來做到這一點? (我討厭「裹在一個的try/catch /重新throw呼叫,並把一個破發點上重新throw技術)。
  2. 認爲Task對象本身就是垃圾收集AggregateException得到了拋出。這是真的
  3. 在回答#2的光:???爲什麼調整更立即觸發AggregateException

回答

1

是否有更好的方法來做到這一點

您可以使用Result屬性或Wait()函數。兩者都阻止,如果Task失敗,他們會拋出AggregateException。另一種選擇是,如果您想對此例外進行操作,則使用ContinueWith()TaskContinuationOptions.OnlyOnFaulted

我以爲在Task對象本身被垃圾收集時拋出了AggregateException。真的嗎?

是的,如果TaskException是不以任何方式訪問,就會拋出異常時,它在.NET 4.0敲定。 (.NET 4.5變化的時候,Task敲定,從Task小號未處理的異常,不再扔。)

在回答光#2:爲什麼調整觸發更直接AggregateException

很可能是因爲它創建了一些會導致垃圾收集運行的對象。

相關問題