Dans la programmation asynchrone, il est fréquent de nécessiter les résultats de plusieurs tâches en cours d'exécution simultanément, chacune renvoyant potentiellement un type de données différent. Illustrons avec trois exemples de tâches:
Cat
. House
. Tesla
. Nous avons besoin de tous les résultats avant de continuer. Bien que l'exécution séquentielle soit possible, l'exécution simultanée est beaucoup plus efficace. Le défi consiste à gérer les divers types de résultats.
Task.WhenAll
et les attentes individuels La solution implique Task.WhenAll
, qui attend que toutes les tâches fournies se terminent. Une fois terminé, récupérez les résultats individuels en utilisant await
:
<code class="language-csharp">var catTask = FeedCat(); var houseTask = SellHouse(); var carTask = BuyCar(); await Task.WhenAll(catTask, houseTask, carTask); var cat = await catTask; var house = await houseTask; var car = await carTask;</code>
Task.WhenAll
crée une tâche parent qui ne se termine que lorsque toutes les tâches enfants (catTask
, houseTask
, carTask
) sont terminées. Par la suite, l'attente de chaque tâche d'enfant récupère individuellement son résultat spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!