Heim >Backend-Entwicklung >C++ >Wie kann ich asynchrone Methoden aus synchronen Methoden in C#aufrufen?

Wie kann ich asynchrone Methoden aus synchronen Methoden in C#aufrufen?

Susan Sarandon
Susan SarandonOriginal
2025-02-02 12:41:131051Durchsuche

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

Aufrufen asynchroner Methode in der Synchronisationsmethode in C#

Asynchronen Methoden in synchronem Code (normalerweise Async -Modifikationssymbol -Logo) aufrufen, ist ein häufiges Entwicklungsproblem. Eine asynchrone Programmierung kann den Betrieb des CEO für eine lange Zeit durchführen, während die UI -Reaktion beibehalten wird. Dies muss jedoch normalerweise die Codestruktur anpassen, die möglicherweise nicht mit der vorhandenen Synchronisationsmethode übereinstimmt.

Plan 1: task.waitandunwrapexception

Wenn die asynchrone Methode (myasyncMedHod) unabhängig ausgeführt werden kann, ohne den Kontext zu synchronisieren, können Sie Task verwenden.

Sie müssen jedoch auf die Verwendung von Task.wait oder Task.Result aufmerksam machen.

Plan 2: asynccontext.runtask
<code class="language-csharp">var task = MyAsyncMethod();
var result = task.WaitAndUnwrapException();</code>

oder, wenn myasyncMedHod mit Kontext synchronisiert werden muss, bietet Asynccontext.runtask eine Methode des verschachtelten Kontexts:

Plan 3: task.run

In einigen Fällen kann Asynccontext.runtask begrenzt sein, wie z. B. asynchrone Methoden, die von UI -Ereignissen abhängen. In diesem Fall kann die asynchrone Methode am Thread -Pool durchgeführt werden:
<code class="language-csharp">var result = AsyncContext.RunTask(MyAsyncMethod).Result;</code>

Bitte beachten Sie, dass diese Methode erfordert, dass MyaSyncMethod mit dem Kontext des Thread -Pools kompatibel sein kann, einschließlich der Einschränkungen für UI -Element -Updates und ASP.NET -Anforderungskontextzugriff.

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

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