Könnte jemand bitte so freundlich sein, zu bestätigen, dass ich das Schlüsselwort Async await richtig verstanden habe? (Mit Version 3 des CTP)
Bisher habe ich herausgefunden, dass das Einfügen des Schlüsselworts await vor einem Methodenaufruf im Wesentlichen zwei Dinge bewirkt: A. Es erzeugt eine sofortige Rückgabe und B. Es erzeugt eine "Fortsetzung", die nach Abschluss des asynchronen Methodenaufrufs aufgerufen wird. In jedem Fall ist die Fortsetzung der Rest des Codeblocks für die Methode.
Ich frage mich also, ob diese beiden Codebits technisch äquivalent sind. Wenn ja, bedeutet dies im Grunde, dass das Schlüsselwort await mit dem Erstellen eines ContinueWith Lambda identisch ist (dh, es ist im Grunde eine Compiler-Verknüpfung für eines). Wenn nicht, was sind die Unterschiede?
bool Success =
await new POP3Connector(
"mail.server.com", txtUsername.Text, txtPassword.Text).Connect();
// At this point the method will return and following code will
// only be invoked when the operation is complete(?)
MessageBox.Show(Success ? "Logged In" : "Wrong password");
VS
(new POP3Connector(
"mail.server.com", txtUsername.Text, txtPassword.Text ).Connect())
.ContinueWith((success) =>
MessageBox.Show(success.Result ? "Logged In" : "Wrong password"));