私が Async await キーワードを正しく理解しているかどうかを誰かが確認してくれませんか? (CTP のバージョン 3 を使用)
これまでのところ、メソッド呼び出しの前に await キーワードを挿入すると、基本的に A. 即時リターンが作成され、B. 非同期メソッド呼び出しの完了時に呼び出される「継続」が作成されるという 2 つのことが行われることがわかりました。いずれにせよ、継続はメソッドのコード ブロックの残りの部分です。
だから私が疑問に思っているのは、これら2つのコードは技術的に同等であり、もしそうなら、これは基本的に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"));