我对WaitAll
和WaitAny
有点困惑。我试图获取异常,但当我使用WaitAll
时,它返回异常,但当我使用WaitAny
时,它不返回任何内容。而且必要的是,如果任何一个任务完成了,工作就完成了。 有没有WaitAny()
的替代方法? WaitAll
和WhenAll
是不同的,因为我不想让所有任务都完成。
try
{
int i = 0;
Task t1 = Task.Factory.StartNew(() =>
{
i = 2 * 4;
});
Task<int> t2 = Task.Factory.StartNew(() =>
{
int a = 0;
int b = 100 / a;
return 0;
});
Task[] tasks = new Task[] { t1, t2 };
Task.WaitAny(tasks);
//Task.WaitAll(tasks);// Working
}
catch (AggregateException ae)
{
var message = ae.InnerException.Message;
Console.WriteLine(message);
}
Console.ReadLine();
t1
会在t2
引发异常之前成功完成,所以你被告知t1
已经成功完成了,可以继续按照正常的流程进行。 - Damien_The_Unbeliever