我遇到了異常處理和並行任務的問題。Task.WaitAll和Exceptions
下面顯示的代碼開始2個任務並等待它們完成。我的問題是,如果一個任務拋出一個異常,catch處理程序永遠不會到達。
List<Task> tasks = new List<Task>();
try
{
tasks.Add(Task.Factory.StartNew(TaskMethod1));
tasks.Add(Task.Factory.StartNew(TaskMethod2));
var arr = tasks.ToArray();
Task.WaitAll(arr);
}
catch (AggregateException e)
{
// do something
}
但是,當我使用下面的代碼來等待具有超時的任務時,捕獲到異常。
while(!Task.WaitAll(arr,100));
我似乎失去了一些東西,爲WaitAll
文檔描述了我的第一次嘗試是正確的。請幫助我理解爲什麼它不起作用。
TaskMethod1和TaskMethod2做了什麼?你在執行什麼線程?如果你可以把它變成一個簡短但完整的例子(比如我的答案),那真的會有所幫助。 – 2010-11-18 17:26:27