【问题标题】:Difference between "foreach with task.Wait" and Task.WaitAll“foreach with task.Wait”和 Task.WaitAll 之间的区别
【发布时间】:2014-03-05 07:34:26
【问题描述】:

有什么区别:

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

Task.WaitAll(sometasks);

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

【问题讨论】:

  • 昨天我问了一个类似的问题,但实际上并不是我想要的,因为我问的方式完全错误......stackoverflow.com/questions/22174915/…
  • 我认为当其中一项任务被取消或引发异常时可能会有所不同。
  • hmmm 也许这是一个好点,也许 WaitAll 会抛出一个 AggregateException,其中包含来自所有 Wait() 调用的异常?

标签: c# .net multithreading task-parallel-library wait


【解决方案1】:

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

另请参阅:Task.WaitAll and Exceptions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    相关资源
    最近更新 更多