Heim >Backend-Entwicklung >C++ >Wie kann ich eine asynchrone Methode in C# ohne Deadlocks synchron aufrufen?
Asynchrone Methoden synchron aufrufen
Angenommen, es gibt eine asynchrone Methode, sagen wir GenerateCodeAsync()
, die eine Aufgabe zurückgibt. Um diese Methode synchron aufzurufen, müssen Sie eine Möglichkeit finden, den synchronen und asynchronen Code zu koordinieren.
Eine Lösung besteht darin, die asynchrone Methode in einem Thread-Pool-Thread auszuführen und den Thread mit awaiter
zu blockieren, bis der Vorgang abgeschlossen ist:
<code class="language-csharp">string code = Task.Run(() => GenerateCodeAsync()).GetAwaiter().GetResult();</code>
Nachteile der direkten Verwendung von .Result
Der direkte Zugriff auf Result
Eigenschaften kann zu Folgendem führen:
Result
blockiert den Hauptthread und verhindert so die Ausführung von asynchronem Code. AggregateException
eingeschlossen. Um diese Probleme zu vermeiden, GetAwaiter().GetResult()
Methode:
Das obige ist der detaillierte Inhalt vonWie kann ich eine asynchrone Methode in C# ohne Deadlocks synchron aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!