Если меня не волнует порядок выполнения задач и мне просто нужно, чтобы они все завершились, следует ли мне использовать 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
Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему я должен предпочесть одно ожидание Task.WhenAll нескольким ожиданиям?
Anonymous » » в форуме C# - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему вызов неоднозначен между Task.Run
(Func ) и Task.Run(Func ) при передаче имени метода
Anonymous » » в форуме C# - 0 Ответы
- 106 Просмотры
-
Последнее сообщение Anonymous
-