Maison >développement back-end >C++ >Comment puis-je appeler des méthodes asynchrones à partir de méthodes synchrones en C #?

Comment puis-je appeler des méthodes asynchrones à partir de méthodes synchrones en C #?

Susan Sarandon
Susan Sarandonoriginal
2025-02-02 12:41:13992parcourir

How Can I Call Asynchronous Methods from Synchronous Methods in C#?

Appelez la méthode asynchrone dans la méthode de synchronisation 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!

Déclaration:
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