有人可以确认我是否正确理解了 Async await 关键字吗?(使用 CTP 版本 3)
到目前为止,我已经发现在方法调用之前插入 await 关键字基本上做了两件事,A. 它创建一个立即返回和 B. 它创建一个在异步方法调用完成时调用的“延续”。在任何情况下,延续都是该方法的代码块的剩余部分。
所以我想知道的是,这两段代码在技术上是否等效,如果是,这是否基本上意味着 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"));