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

Den*_*dic 3 .net c# multithreading wait task-parallel-library

有什么区别:

foreach(Task task in someTasks)
{
    task.Wait();
}
Run Code Online (Sandbox Code Playgroud)

Task.WaitAll(sometasks);
Run Code Online (Sandbox Code Playgroud)

从本质上看,从最终结果来看,他们应该做同样的事情吗?

Hen*_*rik 5

不同之处在于异常处理.如果task.Wait();抛出,foreach则退出循环.WaitAll将捕获所有异常并抛出AggregateException包含它们.

另请参见:Task.WaitAll和Exceptions