name keywords google etiquetas ejemplos c# .net asynchronous async-ctp

c# - keywords - meta tags google



¿Por qué existe la palabra clave async? (4)

Creo que quizás este artículo cubre el razonamiento:

http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx

El primer párrafo dice:

Varias personas me han preguntado qué es lo que motiva la decisión de diseño para requerir que cualquier método que contenga una expresión "en espera" vaya precedido de la palabra clave contextual "asincrónico".

Concluye:

Eso es un montón de pros y contras; después de evaluarlos a todos, y de jugar con el compilador prototipo para ver cómo se sentía, los diseñadores de C # decidieron requerir "asincronización" en un método que contiene una "espera". Creo que es una elección razonable.

El cortocircuito es compatibilidad hacia atrás.

Otras lecturas:

blogs.msdn.com/b/ericlippert/archive/2010/10/29/…

Al navegar por el canal 9 videos msdn, encontré el siguiente comentario sin respuesta y esperaba que alguien pudiera explicarlo.

No entiendo el objetivo de la palabra clave asincrónica. ¿Por qué no simplemente permitir la palabra clave await en cualquier momento en que el método devuelva la tarea, al igual que los iteradores pueden generar retorno en cualquier método que devuelva IEnumerable?

Estoy seguro de que hay una buena razón, solo me gustaría entender por qué la sugerencia anterior no fue posible.


Escribí un resumen de las preguntas clave async / await en mi blog hace un tiempo.

Aquí está la conclusión de la sección "Inferring async ":

Eric Lippert tiene la http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx sobre el tema. También se ha discutido en blogs.msdn.com/b/ericlippert/archive/2010/10/29/… , Channel9 y forums .

Para resumir, una palabra clave await palabra sería un gran cambio. La elección fue entre una espera múltiple (por ejemplo, await for ) o una palabra clave en el método ( async ) que permitiría la palabra clave await solo dentro de ese método. Los métodos de marca explícitamente async son más fáciles de analizar para humanos y computadoras, por lo que decidieron ir con el par async/await .


Para mí, la razón más convincente es que el significado de la declaración de return cambia cuando una función se vuelve async . Sin return x asnyc return x significa "devolver una tarea con el valor x ", y con asincrónico significa "establecer el resultado de la tarea en x .


Se introdujo principalmente para evitar problemas de compatibilidad con versiones anteriores. Si el compilador debe inferir la async -ness de un método (que sería a través de la detección de palabras clave en await ), existen situaciones sutiles en las que el código existente sería tratado de manera diferente, especialmente cuando tiene identificadores (nombres de variables o funciones) llamado await ).

Una explicación completa está aquí: http://blogs.msdn.com/b/ericlippert/archive/2010/11/11/whither-async.aspx