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