Maison > développement back-end > C++ > Comment puis-je appeler de manière synchrone une méthode asynchrone en C# sans blocage ?

Comment puis-je appeler de manière synchrone une méthode asynchrone en C# sans blocage ?

Patricia Arquette
Libérer: 2025-01-19 13:52:12
original
371 Les gens l'ont consulté

How Can I Synchronously Call an Asynchronous Method in C# Without Deadlocks?

Appeler de manière synchrone des méthodes asynchrones

Supposons qu'il existe une méthode asynchrone, disons GenerateCodeAsync(), qui renvoie une tâche. Pour appeler cette méthode de manière synchrone, vous devez trouver un moyen de coordonner le code synchrone et asynchrone.

Une solution consiste à exécuter la méthode asynchrone dans un thread de pool de threads et à utiliser awaiter pour bloquer le thread jusqu'à ce que l'opération soit terminée :

<code class="language-csharp">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Copier après la connexion

Inconvénients de l'utilisation de .Result directement

L'accès direct aux Result propriétés peut entraîner :

  • Deadlock : Un appel à Result bloque le thread principal, empêchant l'exécution du code asynchrone.
  • AggregateExceptions : toutes les exceptions levées par méthodes asynchrones seront encapsulées dans AggregateException.

Pour éviter ces problèmes, GetAwaiter().GetResult()méthode :

  • Exécutez des méthodes asynchrones dans les threads du pool de threads pour éviter les blocages.
  • Déballez toutes les exceptions levées pour y accéder sans gestionnaires de blocs supplémentaires.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal