C#Asynchrones Programmieren
Der Schlüsselunterschied zwischen await Task.Run()
return Task.Run()
In der asynchronen Programmierung ist es häufig erforderlich, Operationen außerhalb des UI -Threads durchzuführen, um die Anwendung der Anwendung zu vermeiden. Dies kann durch die Aufgabe in C#erreicht werden. Es gibt jedoch subtile Unterschiede zwischen
, wenn es um Abnormalitäten und andere Aspekte geht. await Task.Run()
return Task.Run()
<.> 1. Disposition:
Der Hauptunterschied besteht darin, dass abnormale Kommunikation. In Situation:
Die Anomalien in der asynchronen Aufgabe verbreiten die Rückrufmethode nur, wenn Sie auf die Aufgabe warten. await Task.Run()
return Task.Run()
Dies kann zu zufälligen Fehlern und potenziellen Sackgassen führen.
im Gegenteil hängt die -Version nicht vom Kontext der Synchronisation ab. Fortsetzung der Vereinbarung des Standardplanungsprogramms für Aufgaben, das sich vom Synchronisationskontext des Aufruf von Threads unterscheidet.
<.> 3. Der generierte Code: await Task.Run()
return Task.Run()
Code Beispiel:
Das folgende Codebeispiel zeigt diese Unterschiede:
Beispiel 1: await Task.Run()
return Task.Run()
In diesen beiden Beispielen ist "dosomework ()" eine Methode, um bestimmte Jobs außerhalb des UI -Threads auszuführen.
Schlussfolgerung:
Die Auswahl von und
hängt von den spezifischen Anforderungen der Anwendung ab. Bei der Kontrolle einer abnormalen Verbreitung und der Sicherstellung des korrekten Synchronisationskontexts ist es wichtig,<code class="language-csharp">async Task TestAsync() { await Task.Run(() => DoSomeWork()); // 异常在等待时传播回 }</code>
geeignet.
Das obige ist der detaillierte Inhalt vonWarte Task.run () vs. return task.run (): Was sind die wichtigsten Unterschiede in der asynchronen Programmierung von C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!