Exercices C#

Exécuter plusieurs tâches en même temps avec Task.WhenAll en C#

Dans cette leçon, vous allez exécuter simultanément deux tâches asynchrones indépendantes et attendre la fin des deux avec Task.WhenAll.

Introduction

Quand plusieurs tâches asynchrones ne dépendent pas les unes des autres, par exemple l'appel de deux API différentes, inutile d'attendre la fin de l'une pour lancer la suivante. Task.WhenAll les exécute en même temps et ne se termine que lorsque toutes sont finies.

Les deux appels Fetch(20) et Fetch(22) démarrent immédiatement, leurs attentes se déroulent donc en parallèle et non l'une après l'autre. Task.WhenAll renvoie un tableau contenant les résultats dans l'ordre des tâches, et leur somme est 42.

Exemple C# exécutable

C#
Exécuter le code →
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]);
    }
}
Résultat de l’exécution
42

S'entraîner avec le débogueur

Placez un point d'arrêt sur une affectation ou une condition importante, cliquez sur Debug et inspectez les valeurs locales avant de passer à la ligne suivante.

S'entraîner avec un défi

Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.

Tous les défis