Maison > développement back-end > C++ > Comment utiliser correctement les opérations asynchrones dans une boucle ForEach en C# ?

Comment utiliser correctement les opérations asynchrones dans une boucle ForEach en C# ?

DDD
Libérer: 2025-01-05 16:58:40
original
136 Les gens l'ont consulté

How to Properly Use Async Operations within a ForEach Loop in C#?

Utilisation d'Async avec ForEach

Lorsque vous essayez d'utiliser des opérations asynchrones dans une boucle ForEach, vous pouvez rencontrer le problème de recevoir une erreur similaire à "Le nom 'Async' n'existe pas dans le contexte actuel." En effet, List.ForEach ne prend pas facilement en charge les opérations asynchrones.

Pour résoudre ce problème, il est recommandé de projeter chaque élément de la liste dans une opération asynchrone. Ceci peut être réalisé en utilisant la méthode Select pour créer un ensemble de tâches, chacune représentant une opération asynchrone correspondant à un élément de la liste.

using (DataContext db = new DataLayer.DataContext())
{
    var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid));
    var results = await Task.WhenAll(tasks);
}
Copier après la connexion

Cette approche offre plusieurs avantages :

  • Gestion appropriée des erreurs : Les exceptions des opérations asynchrones ne peuvent pas être interceptées avec un bloc try/catch. L'utilisation de Task.WhenAll garantit la propagation des exceptions, permettant ainsi une gestion naturelle des exceptions.
  • Suivi de l'achèvement : En attendant Task.WhenAll, le code établit que toutes les opérations asynchrones sont terminées. Cette connaissance n'est pas facilement disponible lors de l'utilisation de délégués vides asynchrones avec ForEach.
  • Syntaxe intuitive : La syntaxe de récupération des résultats est plus intuitive, car GetAdminsFromGroupAsync implique une valeur de retour, permettant un résultat plus naturel. style de programmation.

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!

source:php.cn
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