有没有人能好心地确认一下我是否正确理解了异步等待关键字?(使用 CTP 的第3版)
到目前为止,我已经计算出在方法调用之前插入 wait 关键字实际上做了两件事,A。它创造了一个立即的回报和 B。它创建一个“延续”,在异步方法调用完成时调用。在任何情况下,延续都是该方法的代码块的剩余部分。
所以我想知道的是,这两段代码在技术上是否是等价的,如果是的话,这是否意味着 wait 关键字与创建 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"));