Maison > développement back-end > C++ > Comment puis-je attendre et récupérer efficacement les résultats de plusieurs tâches simultanées en C #?

Comment puis-je attendre et récupérer efficacement les résultats de plusieurs tâches simultanées en C #?

DDD
Libérer: 2025-01-28 03:06:14
original
881 Les gens l'ont consulté

How Can I Efficiently Await and Retrieve Results from Multiple Concurrent Tasks in C#?

Gérer les tâches simultanées et récupérer les résultats dans C #

Un défi fréquent dans la programmation C # consiste à gérer plusieurs tâches asynchrones qui doivent s'exécuter simultanément et renvoyer des résultats individuels. Cet article démontre une approche efficace en utilisant Task.WhenAll.

Voici un scénario: imaginez trois tâches indépendantes: nourrir un chat, vendre une maison et acheter une voiture. Chaque tâche est asynchrone et produit un résultat unique.

private async Task<Cat> FeedCat() { /* ... */ }
private async Task<House> SellHouse() { /* ... */ }
private async Task<Tesla> BuyCar() { /* ... */ }

async Task Main()
{
    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;
}
Copier après la connexion

La méthode Task.WhenAll initie les trois tâches simultanément. Une fois WhenAll terminé (signaler toutes les tâches terminées), vous pouvez récupérer en toute sécurité le résultat de chaque tâche en utilisant des opérations individuelles await. Les méthodes asynchrones renvoient implicitement les tâches déjà démarrées.

Bien que l'utilisation de Task.Result est possible après WhenAll, car l'achèvement des tâches est garantie, l'approche await est généralement recommandée pour sa lisibilité et sa robustesse améliorées dans des scénarios plus complexes.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal