Async und Await entmystifiziert: Das Task.Run-Rätsel vermeiden
Async und Wait zu verstehen kann zunächst schwierig sein, aber die Konzepte aufzuschlüsseln kann den Prozess vereinfachen.
Asynchroner vs. Hintergrund-Thread Ausführung
Asynchron bedeutet nicht unbedingt „Hintergrundthread“; es bezieht sich auf Methoden, die es ermöglichen, die Kontrolle an den aufrufenden Thread zu übergeben, bevor fortgefahren wird. Diese Ertragspunkte sind mit Warteausdrücken markiert.
Awaitable vs. Async
Auf erwartbare Typen kann gewartet werden (wie in Warteausdrücken), während asynchrone Methoden asynchrone Methoden ermöglichen Ausführung. Nicht alle asynchronen Methoden geben erwartbare Typen zurück und umgekehrt.
Task.Run für Hintergrundausführung
Wenn Sie einen Vorgang in einem Hintergrundthread ausführen und durchführen möchten Erwartbar, verwenden Sie Task.Run:
private Task<int> DoWorkAsync() { return Task.Run(() => 1 + 2); }
Async Methods for Nachgeben
Erstellen Sie asynchrone Methoden, die dem Aufrufer etwas zurückgeben, indem Sie „await“ und „async“ in der Methodensignatur verwenden:
private async Task<int> GetWebPageHtmlSizeAsync() { var client = new HttpClient(); var html = await client.GetAsync("http://www.example.com/"); return html.Length; }
Task.Run in synchronen Methoden vermeiden
Es wird nicht empfohlen, synchrone Methoden in Task.Run einzubinden. Wenn Sie die Ausführung in einem Hintergrundthread durchführen müssen, erstellen Sie eine separate Aufgabe.
Ressourcen für weitere Untersuchungen
Das obige ist der detaillierte Inhalt vonWann sollte ich „Task.Run' mit Async und Await verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!