Upload
eduard-tomas
View
2.818
Download
5
Embed Size (px)
DESCRIPTION
Presentación correspondiente al evento"12 hores de visual studio" sobre las nuevas palabras clave async y await de C# 5
Citation preview
Async/Await: Programación asíncrona
para dummies
Eduard TomàsTechnology Specialist – raona
http://www.raona.com@eiximenis
Disclaimer
• Vamos a hablar de programación asíncrona.
• No vamos a hablar de:– Threads (Bueno sí... un poco sí )– Concurrencia
• Es posible la programación asíncrona con una sola CPU y con un solo thread
Introducción
• Facilitar las llamadas a métodos asíncronos como si fuesen síncronos
• Async / Await no trata sobre la creación de métodos asíncronos, trata sobre la llamada a esos métodos
Async
• No significa «este método es asíncrono»• Significa que el método quiere realizar
llamadas a métodos asíncronos y sincronizarse con ellos
Await
• No significa «espérate (bloqueáte) hasta que termine la llamada al método asíncrono»– Eso convertiría el asincronismo en sincronismo
• Significa «Si la tarea asíncrona no ha terminado, sal del método (y vuelve al llamador) y marca el código posterior al await como código a ejecutarse una vez se termine la tarea– Callback
Task Asynchrony Pattern
• Facilidad para encadenar métodos asíncronos que devuelven un resultado.
• Si un método async debe devolver un resultado de tipo T, basta con:– Declarar el tipo de retorno como Task<T>– Devolver un objeto T
SynchronizationContext
• Await «intenta» llevarte siempre de vuelta donde estabas– P.ej. Si usas await desde el thread de UI, el código
que sigue a await intenta ejecutarse en este thread– El código que sigue a await se ejecuta en el mismo
SynchronizationContext que el código que llamó a await• Si este es null, se usa TaskScheduler.Default que suele
ser Threadpool• WPF y winforms tienen Synchronization Context