Bei der Arbeit mit asynchroner Programmierung ist es wichtig, den Unterschied zwischen der asynchronen Ausführung von Code und der Erstellung erwartbarer Methoden zu verstehen.
Task.Run und Asynchronous Ausführung:
Task.Run führt Code in einem Hintergrundthread aus, wodurch er asynchron erscheint. Dieser Ansatz erstellt jedoch keine wirklich asynchrone Methode. Der aufrufende Thread bleibt blockiert, bis die Aufgabe abgeschlossen ist.
Beispiel:
private async Task DoWork2Async() { Task.Run(() => { int result = 1 + 2; }); }
In diesem Beispiel ist DoWork2Async nicht wirklich asynchron, da der aufrufende Thread weiterhin blockiert wird während die Aufgabe in einem Hintergrundthread ausgeführt wird.
Native Async Methoden:
Native asynchrone Methoden werden mit dem Schlüsselwort async deklariert und ermöglichen die Rückgabe der Kontrolle an den Aufrufer, bevor die Ausführung beginnt. Der Aufrufer kann dann mit der Ausführung anderen Codes fortfahren, während er auf den Abschluss der asynchronen Vorgänge wartet.
Beispiel:
private async Task DoWork1Async() { int result = 1 + 2; }
In diesem Beispiel ist DoWork1Async eine native asynchrone Methode . Wenn Sie darauf warten, wird der aufrufende Thread freigegeben, sodass anderer Code ausgeführt werden kann, während auf den Abschluss des asynchronen Vorgangs gewartet wird.
Schlussfolgerung:
So erstellen Sie einen Bei der asynchronen Methode „awaitable“ sollte das Schlüsselwort async verwendet werden, ohne den synchronen Code in Task.Run einzubinden. Dies ermöglicht eine echte asynchrone Ausführung, bei der der aufrufende Thread nicht blockiert wird, während der asynchrone Vorgang ausgeführt wird.
Das obige ist der detaillierte Inhalt vonAsynchrone Methoden: Task.Run vs. Native Async – Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!