Czy ktoś mógłby być na tyle uprzejmy, aby potwierdzić, czy poprawnie zrozumiałem słowo kluczowe Async await? (Korzystanie z wersji 3 CTP)
Jak dotąd odkryłem, że wstawienie słowa kluczowego await przed wywołaniem metody zasadniczo robi dwie rzeczy: A. Tworzy natychmiastowy powrót i B. Tworzy „kontynuację”, która jest wywoływana po zakończeniu wywołania metody async. W każdym przypadku kontynuacja jest pozostałą częścią bloku kodu metody.
Zastanawiam się więc, czy te dwa bity kodu są technicznie równoważne, a jeśli tak, czy to w zasadzie oznacza, że słowo kluczowe await jest identyczne z tworzeniem ContinueWith Lambda (tj. Jest to w zasadzie skrót kompilatora do jednego)? Jeśli nie, jakie są różnice?
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"));