Maison >développement back-end >C++ >Comment puis-je appeler des méthodes asynchrones à partir de méthodes synchrones en C #?
appeler des méthodes asynchrones dans le code synchrone (généralement le logo du symbole de modification asynchrone) est un problème de développement courant. La programmation asynchrone peut effectuer le fonctionnement du PDG pendant une longue période tout en maintenant la réponse de l'interface utilisateur, mais cela doit généralement ajuster la structure du code, qui peut ne pas correspondre à la méthode de synchronisation existante.
Plan 1: tâche.WaitandUnwrapException
Si la méthode asynchrone (myasyncmedhod) peut s'exécuter indépendamment, sans avoir besoin de synchroniser le contexte, vous pouvez utiliser la tâche.
Cependant, vous devez prêter attention lorsque vous utilisez Task.Atthe ou tâche.Result, ils emballeront des emballages anormaux dans AggregateException.Plan 2: asyncContext.runtask
<code class="language-csharp">var task = MyAsyncMethod(); var result = task.WaitAndUnwrapException();</code>
ou, si myasyncmedhod doit être synchronisé avec le contexte, asyncContext.runtask fournit une méthode de contexte imbriqué:
Plan 3: tâche.run
Dans certains cas, AsyncConText.runtask peut être limité, comme les méthodes asynchrones qui dépendent des événements d'interface utilisateur. Dans ce cas, la méthode asynchrone peut être effectuée sur le pool de threads:
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
Veuillez noter que cette méthode nécessite que MyasyncMethod puisse être compatible avec le contexte du pool de threads, y compris les restrictions sur les mises à jour des éléments d'interface utilisateur et l'accès au contexte de la demande ASP.NET.
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!