Чи може хтось, будь ласка, підтвердити, чи правильно я зрозумів ключове слово Async await? (Використання версії 3 CTP)
До цього часу я розробив, що вставлення ключового слова await перед викликом методу, по суті, робить 2 речі: 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"));