Async/Await verstehen: Wann Task.Run verwendet werden sollte
Im Bereich der asynchronen Programmierung ist es wichtig, zwischen asynchronen Methoden ( asynchron) und asynchrone Ausführung (Hintergrund-Threading). Um in die Nuancen einzutauchen, untersuchen wir die folgenden Szenarios:
Szenario 1: Kein Hintergrund-Threading
private async Task DoWork1Async() { int result = 1 + 2; }
In diesem Beispiel ist die Methode als asynchron markiert, aber führt eine triviale Operation aus, die keine Hintergrundausführung erfordert. Daher wird das Warten auf DoWork1Async() synchron ausgeführt.
Szenario 2: Ausführung in einem Hintergrundthread
private async Task DoWork2Async() { Task.Run( () => { int result = 1 + 2; }); }
Hier wird die Methode erneut als asynchron markiert, aber Es umschließt den eigentlichen Vorgang in Task.Run. Dadurch wird sichergestellt, dass der Vorgang in einem Hintergrundthread ausgeführt wird. Das Warten auf DoWork2Async() wird jedoch weiterhin synchron ausgeführt, da nicht auf den Hintergrund-Thread-Vorgang gewartet wird.
Methodenrückgabetyp und Asynchronverhalten
Der Rückgabetyp von a Die Methode kann auch ihr asynchrones Verhalten beeinflussen. Methoden, die Task oder Task
Task.Run für asynchrone Ausführung
Um eine Methode erwartbar zu machen und ihre Operation in einem Hintergrundthread auszuführen, wir sollten Task.Run verwenden, um einen neuen zu erstellen task. Dieser Ansatz ist angemessener als das Einschließen der gesamten Methode in Task.Run, da wir so eine klare Trennung zwischen synchronem und asynchronem Code beibehalten können.
private Task<int> DoWorkAsync() // No async because the method does not need await { return Task.Run(() => { return 1 + 2; }); }
Best Practices
Das obige ist der detaillierte Inhalt vonWann sollte ich „Task.Run' mit Async/Await verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!