Ai đó có thể vui lòng đủ tốt để xác nhận xem tôi đã hiểu đúng từ khóa Async await chưa? (Sử dụng phiên bản 3 của CTP)
Cho đến nay, tôi đã phát hiện ra rằng việc chèn từ khóa await trước một cuộc gọi phương thức về cơ bản thực hiện 2 điều, A. Nó tạo ra một trả về ngay lập tức và B. Nó tạo ra một "tiếp tục" được gọi sau khi hoàn thành việc gọi phương thức async. Trong mọi trường hợp, phần tiếp tục là phần còn lại của khối mã cho phương thức.
Vì vậy, những gì tôi đang tự hỏi là, hai bit mã này có tương đương về mặt kỹ thuật không, và nếu có, thì điều này về cơ bản có nghĩa là từ khóa await giống hệt với việc tạo ContinueWith Lambda (nghĩa là: về cơ bản nó là một phím tắt trình biên dịch cho một)? Nếu không, sự khác biệt là gì?
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"));