我必須在一個函數內部有兩個任務,每個都有Try Catch來處理異常。 但是我想知道會發生什麼,如果我在第一個任務中有異常時從函數返回,第二個也會以Exception結束。 第二個任務的異常處理未處理並且在GC上通過該任務對象調用Finalize時會使應用程序崩潰。任務異常
示例代碼:
public void ProcessJob()
{
var Job1 = Task.Factory.StartNew(() => Dojob1());
var Job2 = Task.Factory.StartNew(() => Dojob2());
try
{
Job1.Wait();
}
catch(Exception ex)
{
//Handle Exception
return;
}
//some other actions.
try
{
Job2.Wait();
}
catch(Exception ex)
{
//Handle Exception
return;
}
}
如果您同步等待任務完成,爲什麼首先使用任務?爲什麼不直接調用'Dojob1()'和'Dojob2()'?一般來說,爲了處理錯誤,您可以將任務的延續添加到任務中,並檢查這些延續中任務的狀態(包括任何拋出的異常)。這是一個異步設置,你並沒有真正使用它。 – David
任務中未處理的異常不再拆除應用程序(自.Net 4.5) – i3arnon
@David。感謝回覆。上面的代碼只是原始問題的概要。我很想知道上面代碼的結果。 –