有人可以请我确认我是否正确理解Async await关键字吗?(使用CTP版本3)
到目前为止,我已经知道,在方法调用之前插入await关键字实际上可以完成两件事:A。它创建立即返回,B。它创建一个“ continuation”,在异步方法调用完成时调用。无论如何,延续是该方法的代码块的其余部分。
所以我想知道的是,这两个代码在技术上是否等效,如果是,这是否基本上意味着await关键字与创建ContinueWith Lambda相同(即,它基本上是一个编译器的快捷方式)?如果没有,有什么区别?
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"));