我有兩個ContinueWith任務。第一個處理任務成功完成時的情況,第二個處理失敗時的情況。 然後我等到他們中的一個完成。 的示例代碼如下: Task.WaitAll和取消的任務
var task = Task.Factory.StartNew(() => { Console.WriteLine("Task is finished"); });
var success = task.ContinueWith(
t => Console.WriteLine("Success")
, TaskContinuationOptions.OnlyOnRanToCompletion
);
var failed = task.ContinueWith(
t => Console.WriteLine("Failed")
, TaskContinuationOptions.NotOnRanToCompletion
);
try
{
Task.WaitAll(success, failed);
}
catch (AggregateException ex)
{
Console.WriteLine(ex.InnerException.Message);
}
我的問題是,是否有可能重寫,以避免TaskCanceledException提高?
'WaitAll'不等到一個完成,那就是'WaitAny'。 – 2014-10-22 07:48:43
了WaitAny將在當他們中的一個,而無需等待時的實際行動將完成將被取消時刻通過 – 2014-10-22 07:51:04
是的,我只是在校正時,路人閱讀和思考'WaitAll'等待一個來完成,而不是術語另一個。 – 2014-10-22 07:53:20