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!