Task.Start/Wait vs. Async/Await: Was ist der Unterschied?
In der Welt der asynchronen Programmierung ist es wichtig, den Unterschied zwischen synchronen Methoden mit Task.Start/Wait und asynchronen Methoden mit Async/Await zu verstehen.
Bitte sehen Sie sich den folgenden Codeausschnitt an:
<code class="language-csharp">public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); }</code>
Im ersten Codeausschnitt verwenden wir die traditionelle Synchronisierungsmethode Task.Start/Wait. So funktioniert es:
Im Gegensatz dazu demonstriert der zweite Codeausschnitt einen asynchronen Ansatz mit Async/Await:
Der Hauptunterschied zwischen diesen beiden Methoden ist das Verhalten des Threads während der Ausführung der Aufgabe. Bei Task.Start/Wait wird der Thread blockiert und kann nicht auf andere Ereignisse reagieren. Im Gegensatz dazu ermöglicht Async/Await einem Thread, andere Aufgaben auszuführen, während er auf eine Antwort wartet.
Stellen Sie sich vor, Sie bestellen ein Mittagessen in einem Restaurant. Verwenden Sie Task.Start/Wait, als würden Sie die Person, die neben Ihnen sitzt, ignorieren, bevor Sie essen. Wenn Sie Async/Await verwenden, ist es, als würden Sie ein Gespräch mit einem Freund fortsetzen, während Sie darauf warten, dass die Suppe serviert wird. Die Hintergrundarbeit läuft noch, aber Ihr Thread kann andere Vorgänge ausführen, während er auf Ergebnisse wartet.
Das obige ist der detaillierte Inhalt vonTask.Start/Wait vs. Async/Await: Was ist der Hauptunterschied in der asynchronen Programmierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!