Heim >Backend-Entwicklung >C++ >Wie kann ich mit Task.Run eine asynchrone Methode synchron aufrufen?
Verwenden Sie Task.Run, um asynchrone Methoden synchron aufzurufen
Asynchrone Programmierung ermöglicht es uns, lang andauernde Vorgänge auszuführen, ohne den Hauptthread zu blockieren. In einigen Fällen müssen wir jedoch möglicherweise asynchrone Methoden synchron aufrufen. So erreichen Sie dies mit Task.Run:
Szene:
Betrachten Sie die folgende asynchrone Methode:
<code class="language-c#">public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; }</code>
Angenommen, wir müssen diese Methode synchron von einer anderen synchronen Methode aufrufen.
Lösung:
Um eine asynchrone Methode synchron auszuführen, können wir die Task.Run-Methode verwenden, um sie in einem Thread-Pool-Thread auszuführen:
<code class="language-c#">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Dieser Code verwendet die folgenden Schritte:
Nachteile der direkten Verwendung von .Result:
Die einfache Methode des direkten Zugriffs auf die Result-Eigenschaft der Aufgabe (d. h. string code = GenerateCodeAsync().Result;
) sollte vermieden werden, da sie die folgenden Nachteile mit sich bringt:
.GetAwaiter().GetResult()
vermeiden wir dieses Problem und erhalten die Ausnahme direkt. Das obige ist der detaillierte Inhalt vonWie kann ich mit Task.Run eine asynchrone Methode synchron aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!