如何为Task.WhenAll()创建多个任务?

时间:2017-02-21 13:16:09

标签: c# .net async-await task-parallel-library

Task.WhenAll()创建多个任务时的最佳做法是什么?

下面这两个async-await替代方案在性能和/或异常情况下的行为方面有区别吗?

它们都有效,但有什么不同吗?

备选方案1:

private async void Button_Click(object sender, RoutedEventArgs e)
{
   // call DoWork() to prepare data
   await Task.WhenAll(myObjects.Select(o => Task.Run(() => o.DoWork()));

  // update ui ...
}

备选方案2:

private async void Button_Click(object sender, RoutedEventArgs e)
{
   // call DoWork () to prepare data - note the async-await around the return Task
   await Task.WhenAll(myObjects.Select(async o => await Task.Run(() => o.DoWork()));

   // update ui...
}

谢谢。

0 个答案:

没有答案