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
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]);
}
}
42S'entraîner avec le débogueur
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