"foreach with task.Wait" 和 "Task.WaitAll" 的区别。

3

什么是以下两者的区别:

foreach(Task task in someTasks)
{
    task.Wait();
}

并且

Task.WaitAll(sometasks);

从最终结果的角度来看,实际上它们应该是在做同样的事情吗?

昨天我问了一个类似的问题,但实际上并不是我想要的,因为我完全用错误的方式提出了这个问题... - Denis Biondic
1
我认为当其中一个任务被取消或抛出异常时,可能会有所不同。 - Dirk
1
嗯,也许这是一个好观点,或许WaitAll会抛出一个包含所有Wait()调用异常的AggregateException? - Denis Biondic
1个回答

5

区别在于异常处理。如果task.Wait();抛出异常,foreach循环会退出。而WaitAll会捕获所有异常并抛出一个包含它们的AggregateException

另请参见:Task.WaitAll和异常


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接