Упражнения C#

Одновременный запуск нескольких задач с Task.WhenAll в C#

В этом уроке вы одновременно запустите две независимые асинхронные задачи и дождётесь завершения обеих с помощью Task.WhenAll.

Введение

Если несколько асинхронных задач не зависят друг от друга, например вызовы двух разных API, не нужно ждать окончания одной, чтобы начать следующую. Task.WhenAll запускает их одновременно и завершается, только когда закончены все.

Оба вызова Fetch(20) и Fetch(22) стартуют сразу, поэтому их ожидания идут параллельно, а не одно за другим. Task.WhenAll возвращает массив результатов в порядке задач, и их сумма 42.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
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

Практика с отладчиком

Поставьте точку останова на важное присваивание или условие, нажмите Debug и посмотрите локальные значения, прежде чем перейти к следующей строке.

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи