Async / warten Sie mit task.run vs task.run und continwith in .NET 4.0

8

Ich habe ein Async-Paket in .net 4.0 installiert. Dies gibt mir die Möglichkeit, in meinen Anwendungen async / await-Schlüsselwörter zu verwenden.

wie ich bis jetzt verstanden habe, kann ich meinen task.run-Code in async / await einpacken und dasselbe Ergebnis haben wie task.run mit continwith.

Stimmt das? oder gibt es tiefere Unterschiede?

    
e4rthdog 05.12.2012, 07:40
quelle

2 Antworten

11

Es hängt davon ab, was Sie mit ContinueWith machen. Aber ja, oft können Sie await verwenden, um dieselben Effekte zu erzielen, die Sie zuvor mit ContinueWith erreicht haben. Was Sie nicht tun können Dinge wie "Fortfahren mit diesem Code nur bei Fehler" - Sie verwenden nur die normale Ausnahmebehandlung dafür. Wie AlexH sagt, wird es weitere Unterschiede im Gesamtverhalten Ihrer async -Methode geben - aber in den meisten Fällen würde ich sagen, dass das wünschenswert ist. Grundsätzlich ist die Asynchronität der Code-Flows, so Async-Methoden neigen dazu, mehr asynchrone Methoden, etc. zu nennen.

Ich schlage vor, dass Sie sich darüber informieren, worum es bei async / await geht (es gibt eine Menge Ressourcen - ich würde das " Verwenden der Task-basierten asynchronen Muster " Seite auf MSDN als einen Startpunkt.

    
Jon Skeet 05.12.2012, 07:47
quelle
4

Es wird einen Unterschied geben, wenn Sie ein asynchrones Schlüsselwort in Ihren Funktions-Prototypen einführen; Die Ausnahmen werden auf der Ebene des Task-Aufrufers ausgelöst. Ohne das async-Schlüsselwort müssen Sie den Status TaskContinuationOptions.OnlyOnFaulted überprüfen, um die Ausnahme zu erhalten.

    
AlexH 05.12.2012 07:51
quelle

Tags und Links