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>
Inconvénients de l'utilisation de .Result directement
L'accès direct aux Result
propriétés peut entraîner :
Result
bloque le thread principal, empêchant l'exécution du code asynchrone. AggregateException
. Pour éviter ces problèmes, GetAwaiter().GetResult()
méthode :
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!