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"));