Gestion efficace de plusieurs opérations asynchrones simultanées et leurs résultats
Ce guide montre comment exécuter simultanément plusieurs tâches asynchrones et récupérer leurs résultats individuels. Supposons que vous ayez trois opérations asynchrones indépendantes, chacune produisant un résultat unique. L'objectif est d'exécuter ces tâches simultanément et d'accéder à leurs résultats respectifs une fois tous terminés.
La méthode Task.WhenAll
fournit une solution élégante. Cette méthode crée une seule tâche qui se termine uniquement lorsque toutes les tâches d'entrée sont terminées. Il renvoie ensuite un tableau contenant les résultats de chaque tâche.
Voici une implémentation pratique:
<code class="language-csharp">Task<string> catTask = FeedCatAsync(); Task<bool> houseTask = SellHouseAsync(); Task<int> carTask = BuyCarAsync(); await Task.WhenAll(catTask, houseTask, carTask); string catResult = await catTask; bool houseResult = await houseTask; int carResult = await carTask;</code>
Dans cet exemple, catTask
, houseTask
et carTask
représentent vos opérations asynchrones. Task.WhenAll
les initie simultanément. La ligne await Task.WhenAll(...)
s'arrête à l'exécution jusqu'à ce que les trois tâches soient conclues.
Une fois terminé, vous pouvez accéder aux résultats individuels en attendant chaque tâche d'origine. Les résultats sont stockés dans catResult
, houseResult
et carResult
, prêts pour un traitement ultérieur.
Il est crucial de se rappeler que les méthodes asynchrones, lors de l'invocation, renvoient immédiatement une tâche "chaude" - une tâche qui a déjà commencé. Par conséquent, vous devez utiliser await
(comme indiqué ci-dessus) ou Task.Result
pour obtenir les résultats réels. L'utilisation de await
est généralement préférée pour sa clarté et ses capacités de gestion des exceptions.
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!