Heim > Backend-Entwicklung > C++ > Wie nenne ich asynchrone Methoden aus Synchroncode in C#?

Wie nenne ich asynchrone Methoden aus Synchroncode in C#?

Barbara Streisand
Freigeben: 2025-02-02 12:46:18
Original
227 Leute haben es durchsucht

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

Aufrufen asynchrone Methode aus der Synchronisationsmethode in C#

asynchrones Programmieren wird in der C#-entwicklung immer beliebter. Manchmal begegnen Sie auf die Situation, die asynchrone Methoden aus dem Synchronisationskontext aufrufen muss. Obwohl dies normalerweise durch asynchrone Methoden implementiert wird, werden in diesem Artikel verschiedene Methoden erörtert, die zu dieser Lücke gebracht wurden.

Methode 1: Verwenden Sie Task.waitandunwrapexception

Wenn Ihre asynchrone Methode einfach ist und nicht mit ihrem Kontext synchronisiert werden muss, können Sie Task verwenden. Diese Methode löst alle Anomalien, die während des asynchronen Betriebs auftreten können.

Methode 2: Verwenden Sie asynccontext.runtask

<code class="language-csharp">var task = MyAsyncMethod();
var result = task.WaitAndUnwrapException();</code>
Nach dem Login kopieren

Für die Methode, die mit dem Kontext synchronisiert werden muss, können Sie asynccontext.runtask verwenden, um einen verschachtelten Kontext zu erstellen. Standardmäßig verkauft Asynccontext den aktuellen Kontext der Synchronisation. Es kann jedoch auf einen beliebigen Kontext angewendet werden.

Methode 3: Verwenden Sie Task.run

<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>
Nach dem Login kopieren
Wenn asynccontext.runtask nicht möglich ist, können Sie Task.run verwenden, um asynchrone Operationen in einem separaten Thread zu starten. Mit dieser Methode können asynchrone Methoden die Ausführung fortsetzen, ohne aufrufe Threads zu blockieren.

Vorsichtsmaßnahmen

Wenn Sie diese Methoden verwenden, denken Sie bitte an die folgenden Punkte:
<code class="language-csharp">var task = Task.Run(async () => await MyAsyncMethod());
var result = task.WaitAndUnwrapException();</code>
Nach dem Login kopieren

Methoden gilt nur für die Methode, für die keine Kontextsynchronisation erforderlich ist.

Methode 2 Wenn die asynchrone Methode auf den UI -Vorfall wartet, kann dies zu einer Sackgasse führen.

Methode drei erfordert, dass asynchrone Methoden im Kontext mit mehreren Threads ordnungsgemäß betrieben werden.

Das obige ist der detaillierte Inhalt vonWie nenne ich asynchrone Methoden aus Synchroncode in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage