Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?

Сообщение Anonymous »

Если меня не волнует порядок выполнения задач и мне просто нужно, чтобы они все завершились, следует ли мне использовать await Task.WhenAll вместо Multiple await? например, является ли DoWork2 ниже предпочтительным методом по сравнению с DoWork1 (и почему?):

using System;
using System.Threading.Tasks;

namespace ConsoleApp
{
class Program
{
static async Task DoTaskAsync(string name, int timeout)
{
var start = DateTime.Now;
Console.WriteLine("Enter {0}, {1}", name, timeout);
await Task.Delay(timeout);
Console.WriteLine("Exit {0}, {1}", name, (DateTime.Now - start).TotalMilliseconds);
return name;
}

static async Task DoWork1()
{
var t1 = DoTaskAsync("t1.1", 3000);
var t2 = DoTaskAsync("t1.2", 2000);
var t3 = DoTaskAsync("t1.3", 1000);

await t1; await t2; await t3;

Console.WriteLine("DoWork1 results: {0}", String.Join(", ", t1.Result, t2.Result, t3.Result));
}

static async Task DoWork2()
{
var t1 = DoTaskAsync("t2.1", 3000);
var t2 = DoTaskAsync("t2.2", 2000);
var t3 = DoTaskAsync("t2.3", 1000);

await Task.WhenAll(t1, t2, t3);

Console.WriteLine("DoWork2 results: {0}", String.Join(", ", t1.Result, t2.Result, t3.Result));
}

static void Main(string[] args)
{
Task.WhenAll(DoWork1(), DoWork2()).Wait();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/183 ... ple-awaits
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Почему вызов неоднозначен между Task.Run(Func) и Task.Run(Func) при передаче имени метода
    Anonymous » » в форуме C#
    0 Ответы
    106 Просмотры
    Последнее сообщение Anonymous
  • Лучший способ распараллелить задачи .NET с помощью Task.WhenAll
    Anonymous » » в форуме C#
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Используйте Task.WhenAll в уже работающем методе.
    Anonymous » » в форуме C#
    0 Ответы
    116 Просмотры
    Последнее сообщение Anonymous
  • Task.WhenAll против Parallel.ForEachAsync – какой подход лучше и почему?
    Anonymous » » в форуме C#
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»