Maison > développement back-end > C++ > Comment appeler des méthodes asynchrones à partir du code synchrone en C #?

Comment appeler des méthodes asynchrones à partir du code synchrone en C #?

Barbara Streisand
Libérer: 2025-02-02 12:46:18
original
227 Les gens l'ont consulté

How to Call Asynchronous Methods from Synchronous Code in C#?

Appelez la méthode asynchrone de la méthode de synchronisation en C #

La programmation asynchrone devient de plus en plus populaire dans le développement C #. Parfois, vous pouvez rencontrer la situation qui doit appeler des méthodes asynchrones du contexte de synchronisation. Bien que cela soit généralement mis en œuvre par des méthodes asynchrones, cet article traite de diverses méthodes qui ont apporté à cet écart.

Méthode 1: Utilisez la tâche.WaitandunwrapException

Si votre méthode asynchrone est simple et n'a pas besoin d'être synchronisée avec son contexte, vous pouvez utiliser la tâche.WaitandUnwrapException pour récupérer ses résultats. Cette méthode résoudra toutes les anomalies qui pourraient se produire pendant l'opération asynchrone.

Méthode 2: Utilisez AsyncConText.Runtask

<code class="language-csharp">var task = MyAsyncMethod();
var result = task.WaitAndUnwrapException();</code>
Copier après la connexion

Pour la méthode qui doit être synchronisée avec le contexte, vous pouvez utiliser asyncConText.runtask pour créer un contexte imbriqué. Par défaut, AsyncConText résume le contexte de synchronisation actuel. Cependant, il peut être appliqué à n'importe quel contexte.

Méthode 3: Utilisez la tâche.run

<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
Copier après la connexion
Si asyncContext.runtask n'est pas possible, vous pouvez utiliser Task.Run pour démarrer des opérations asynchrones sur un thread séparé. Cette méthode permet aux méthodes asynchrones de continuer l'exécution sans bloquer les threads d'appel.

Précautions

Lorsque vous utilisez ces méthodes, n'oubliez pas les points suivants:
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod());
var result = task.WaitAndUnwrapException();</code>
Copier après la connexion

Les méthodes s'appliquent uniquement à la méthode qui ne nécessite pas de synchronisation contextuelle.

Méthode 2 Si la méthode asynchrone attend l'incident de l'interface utilisateur, elle peut conduire à une impasse.

La méthode trois nécessite que les méthodes asynchrones soient correctement exploitées sur un contexte multi-thread.

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