Sobes.tech
Junior — Middle

Quelle est la différence entre l'utilisation des méthodes WaitAll et WhenAll en programmation asynchrone?

sobes.tech IA

Réponse de l'IA

Les méthodes WaitAll et WhenAll en C# sont utilisées pour attendre la fin de plusieurs tâches, mais présentent des différences importantes :

  • WaitAll — c'est une méthode synchrone de la classe Task, qui bloque le thread actuel jusqu'à ce que toutes les tâches passées soient terminées. Elle ne retourne pas de résultat et ne supporte pas l'attente asynchrone.

  • WhenAll — c'est une méthode asynchrone qui retourne une tâche se terminant lorsque toutes les tâches passées sont terminées. Elle permet d'utiliser await pour attendre sans bloquer, ce qui améliore la performance et la réactivité de l'application.

Exemple d'utilisation de WhenAll :

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
await Task.WhenAll(tasks);
Console.WriteLine("Toutes les tâches sont terminées");

Utilisation de WaitAll :

var tasks = new[] { Task.Delay(1000), Task.Delay(2000) };
Task.WaitAll(tasks);
Console.WriteLine("Toutes les tâches sont terminées");

La principale différence est que WaitAll bloque le thread, tandis que WhenAll permet d'attendre de manière asynchrone sans bloquer.