async Task friert die Benutzeroberfläche ein
Ich habe eine Methode wie diese:
private async Task DoSomething()
{
// long running work here.
}
Wenn ich die Methode so aufrufe, blockiert sie die Benutzeroberfläche:
Task t = DoSomething();
Ich muss eine der folgenden Aktionen ausführen, um die Sperrung aufzuheben:
Task t = new Task(() => DoSomething());
t.Start();
// Or
Task t = Task.Factory.StartNew(() => DoSomething());
Also, was ist der Punkt von async / await, wenn Sie nur Aufgaben verwenden können, wie sie in Framework 4 waren und verwendenTask.Wait()
anstelle vonawait
?
EDIT: Ich verstehe alle Ihre Antworten - aber keiner spricht wirklich meinen letzten Absatz an. Kann mir jemand ein Beispiel für aufgabenbasiertes Multithreading geben, bei dem async / await die Lesbarkeit und / oder den Programmfluss verbessert?