Async / Await: Programación asíncrona para dummies (12 horas visual studio)

7
Async/Await: Programación asíncrona para dummies Eduard Tomàs Technology Specialist – raona http://www.raona.com @eiximenis

description

Presentación correspondiente al evento"12 hores de visual studio" sobre las nuevas palabras clave async y await de C# 5

Transcript of Async / Await: Programación asíncrona para dummies (12 horas visual studio)

Page 1: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

Async/Await: Programación asíncrona

para dummies

Eduard TomàsTechnology Specialist – raona

http://www.raona.com@eiximenis

Page 2: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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

Page 3: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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

Page 4: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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

Page 5: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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

Page 6: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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

Page 7: Async / Await: Programación asíncrona para dummies (12 horas visual studio)

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