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
Libérer: 2025-02-02 12:41:13
original
1012 Les gens l'ont consulté

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
var task = MyAsyncMethod();
var result = task.WaitAndUnwrapException();
Copier après la connexion

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:
var result = AsyncContext.RunTask(MyAsyncMethod).Result;
Copier après la connexion

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 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