Одновременный запуск нескольких задач с Task.WhenAll в C#
В этом уроке вы одновременно запустите две независимые асинхронные задачи и дождётесь завершения обеих с помощью Task.WhenAll.
Введение
Если несколько асинхронных задач не зависят друг от друга, например вызовы двух разных API, не нужно ждать окончания одной, чтобы начать следующую. Task.WhenAll запускает их одновременно и завершается, только когда закончены все.
Оба вызова Fetch(20) и Fetch(22) стартуют сразу, поэтому их ожидания идут параллельно, а не одно за другим. Task.WhenAll возвращает массив результатов в порядке задач, и их сумма 42.
Пример на C#, который можно запустить
using System;
using System.Threading.Tasks;
class Program
{
static async Task<int> Fetch(int value) { await Task.Delay(20); return value; }
static async Task Main()
{
int[] results = await Task.WhenAll(Fetch(20), Fetch(22));
Console.WriteLine(results[0] + results[1]);
}
}
42Практика с отладчиком
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи