2012-12-05 12 views
8

Ich habe Async-Paket in. NET 4.0 installiert. Dies gibt mir die Möglichkeit, in meinen Anwendungen async/await-Schlüsselwörter zu verwenden.Async/erwarten mit task.run vs task.run und contintwith in. NET

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.

Ist das wahr? oder gibt es tiefere Unterschiede?

Antwort

11

Es hängt davon ab, was Sie mit ContinueWith tun. Aber ja, oft können Sie await verwenden, um die gleichen Effekte zu erreichen, die Sie zuvor mit ContinueWith erreicht haben. Was Sie können nicht tun, ist Dinge wie "weiter mit diesem Code nur bei Ausfall" - Sie verwenden nur normale Ausnahme Behandlung dafür. Wie AlexH sagt, wird es weitere Unterschiede hinsichtlich des Gesamtverhaltens Ihrer async-Methode geben - aber in den meisten Fällen würde ich sagen, dass dies wünschenswert ist. Grundsätzlich ist die Asynchronität des Codes fließt, so Asynchron-Methoden neigen dazu, mehr Asynchron-Methoden aufrufen, usw.

Ich schlage vor, Sie lesen, was async/await ist über (es gibt viele Ressourcen gibt - ich würde empfehlen die "Consuming the Task-based Asynchronous Pattern" Seite auf MSDN als einen Ausgangspunkt

4

Es wird ein Unterschied, ob man async Keyword in Ihren Funktionen Prototypen vorstellen,.. die Ausnahmen werden bei dem Task Anrufer Ebene geworfen werden Ohne das Asynchron-Schlüsselwort, müssen Sie prüfen, der Status TaskContinuationOptions.OnlyOnFaulted, um die Ausnahme zu erhalten

Verwandte Themen