¿Podría alguien tener la amabilidad de confirmar si he entendido correctamente la palabra clave Async await? (Usando la versión 3 del CTP)
Hasta ahora, he descubierto que insertar la palabra clave await antes de una llamada a un método esencialmente hace 2 cosas, A. Crea un retorno inmediato y B. Crea una "continuación" que se invoca al completar la invocación del método asincrónico. En cualquier caso, la continuación es el resto del bloque de código del método.
Entonces, lo que me pregunto es si estos dos bits de código son técnicamente equivalentes y, de ser así, ¿esto básicamente significa que la palabra clave await es idéntica a la creación de un ContinueWith Lambda (es decir, es básicamente un acceso directo del compilador para uno)? Si no es así, ¿cuáles son las diferencias?
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"));