我有两个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