SlideShare una empresa de Scribd logo
1 de 7
Async/Await:
Programación asíncrona
    para dummies
          Eduard Tomàs
  Technology 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

Más contenido relacionado

La actualidad más candente

Software testing lab manual
Software testing lab manualSoftware testing lab manual
Software testing lab manualTanzeem Syed
 
Ch 7 integrating quality activities in the projectlife cycle
Ch 7 integrating quality activities in the projectlife cycleCh 7 integrating quality activities in the projectlife cycle
Ch 7 integrating quality activities in the projectlife cycleKittitouch Suteeca
 
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Amazon Web Services
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAmazon Web Services LATAM
 
Ch 10 cost of software quality
Ch 10 cost of software qualityCh 10 cost of software quality
Ch 10 cost of software qualityKittitouch Suteeca
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified ProcessOmkar Dash
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalWesley R. Bezerra
 
Domain-Specific Software Engineering
Domain-Specific Software EngineeringDomain-Specific Software Engineering
Domain-Specific Software Engineeringelliando dias
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Professional Testing
 
Software Engineering : Process Models
Software Engineering : Process ModelsSoftware Engineering : Process Models
Software Engineering : Process ModelsAjit Nayak
 

La actualidad más candente (20)

Intro to DevOps
Intro to DevOpsIntro to DevOps
Intro to DevOps
 
Software testing lab manual
Software testing lab manualSoftware testing lab manual
Software testing lab manual
 
Aula diagrama de classes
Aula diagrama de classesAula diagrama de classes
Aula diagrama de classes
 
Ch 7 integrating quality activities in the projectlife cycle
Ch 7 integrating quality activities in the projectlife cycleCh 7 integrating quality activities in the projectlife cycle
Ch 7 integrating quality activities in the projectlife cycle
 
Entregables de pruebas
Entregables de pruebasEntregables de pruebas
Entregables de pruebas
 
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
Four Strategies to Create a DevOps Culture & System that Favors Innovation & ...
 
Capitulo 02 sommerville
Capitulo 02 sommervilleCapitulo 02 sommerville
Capitulo 02 sommerville
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
ABAP Unit and TDD
ABAP Unit and TDDABAP Unit and TDD
ABAP Unit and TDD
 
Ch 10 cost of software quality
Ch 10 cost of software qualityCh 10 cost of software quality
Ch 10 cost of software quality
 
1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño1-Unidad 1. Arquitectura de Diseño
1-Unidad 1. Arquitectura de Diseño
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
 
Software Architecture and Design Thinking
Software Architecture and Design ThinkingSoftware Architecture and Design Thinking
Software Architecture and Design Thinking
 
Lógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicionalLógica de Programação - Estrutura condicional
Lógica de Programação - Estrutura condicional
 
Domain-Specific Software Engineering
Domain-Specific Software EngineeringDomain-Specific Software Engineering
Domain-Specific Software Engineering
 
Waterfall model
Waterfall modelWaterfall model
Waterfall model
 
Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2Fundamentos de Pruebas de Software - Capítulo 2
Fundamentos de Pruebas de Software - Capítulo 2
 
Slides chapter 2
Slides chapter 2Slides chapter 2
Slides chapter 2
 
Software Engineering : Process Models
Software Engineering : Process ModelsSoftware Engineering : Process Models
Software Engineering : Process Models
 

Destacado

Modos de transmisión
Modos de transmisión Modos de transmisión
Modos de transmisión la católica
 
Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)ITcom
 
El Video En LíNea Para Dummies 2
El Video En LíNea Para Dummies 2El Video En LíNea Para Dummies 2
El Video En LíNea Para Dummies 2campus party
 
Videojuegos para dummies
Videojuegos para dummiesVideojuegos para dummies
Videojuegos para dummiesKmyllo Colorado
 
Autobranding for dummies: una introducción foolproof a las marcas
Autobranding for dummies: una introducción foolproof a las marcasAutobranding for dummies: una introducción foolproof a las marcas
Autobranding for dummies: una introducción foolproof a las marcasIgnacio Segura
 
Arterias de la Cabeza Y Cuello
Arterias de la Cabeza Y CuelloArterias de la Cabeza Y Cuello
Arterias de la Cabeza Y CuelloAlienware
 
Principios de topografia
Principios de topografiaPrincipios de topografia
Principios de topografiauni
 
Motor CA 2º Bto
Motor CA 2º BtoMotor CA 2º Bto
Motor CA 2º Btorlopez33
 
Comprender y Transformar la Enseñanza(G. Sacristan)
Comprender y Transformar la Enseñanza(G. Sacristan)Comprender y Transformar la Enseñanza(G. Sacristan)
Comprender y Transformar la Enseñanza(G. Sacristan)184ROCIO
 
TeoríAs PedagóGicas Y PsicolóGicas Del Aprendizaje
TeoríAs PedagóGicas Y PsicolóGicas Del AprendizajeTeoríAs PedagóGicas Y PsicolóGicas Del Aprendizaje
TeoríAs PedagóGicas Y PsicolóGicas Del AprendizajeEuny Lou
 
Monografia completa
Monografia completaMonografia completa
Monografia completaAnglesP
 
las proteinas en diapositivas
 las proteinas  en diapositivas  las proteinas  en diapositivas
las proteinas en diapositivas sandrita506790
 
El poder de la palabra bra-robert-dilts
El poder de la palabra bra-robert-diltsEl poder de la palabra bra-robert-dilts
El poder de la palabra bra-robert-diltsalexus1010
 
Valores, Moral Y Etica
Valores, Moral Y EticaValores, Moral Y Etica
Valores, Moral Y Eticaguest1d85ba
 
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca Urbina
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca UrbinaEvaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca Urbina
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca UrbinaMONIKKK
 

Destacado (20)

Modos de transmisión
Modos de transmisión Modos de transmisión
Modos de transmisión
 
Async/Await
Async/AwaitAsync/Await
Async/Await
 
Async await
Async awaitAsync await
Async await
 
Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)Servidores Para Dummies (Parte 1)
Servidores Para Dummies (Parte 1)
 
El Video En LíNea Para Dummies 2
El Video En LíNea Para Dummies 2El Video En LíNea Para Dummies 2
El Video En LíNea Para Dummies 2
 
Videojuegos para dummies
Videojuegos para dummiesVideojuegos para dummies
Videojuegos para dummies
 
Autobranding for dummies: una introducción foolproof a las marcas
Autobranding for dummies: una introducción foolproof a las marcasAutobranding for dummies: una introducción foolproof a las marcas
Autobranding for dummies: una introducción foolproof a las marcas
 
Arterias de la Cabeza Y Cuello
Arterias de la Cabeza Y CuelloArterias de la Cabeza Y Cuello
Arterias de la Cabeza Y Cuello
 
Principios de topografia
Principios de topografiaPrincipios de topografia
Principios de topografia
 
Taponamiento cardíaco
Taponamiento cardíacoTaponamiento cardíaco
Taponamiento cardíaco
 
Motor CA 2º Bto
Motor CA 2º BtoMotor CA 2º Bto
Motor CA 2º Bto
 
Comprender y Transformar la Enseñanza(G. Sacristan)
Comprender y Transformar la Enseñanza(G. Sacristan)Comprender y Transformar la Enseñanza(G. Sacristan)
Comprender y Transformar la Enseñanza(G. Sacristan)
 
TeoríAs PedagóGicas Y PsicolóGicas Del Aprendizaje
TeoríAs PedagóGicas Y PsicolóGicas Del AprendizajeTeoríAs PedagóGicas Y PsicolóGicas Del Aprendizaje
TeoríAs PedagóGicas Y PsicolóGicas Del Aprendizaje
 
Genetica
GeneticaGenetica
Genetica
 
Monografia completa
Monografia completaMonografia completa
Monografia completa
 
las proteinas en diapositivas
 las proteinas  en diapositivas  las proteinas  en diapositivas
las proteinas en diapositivas
 
Exposicion riesgos físicos
Exposicion riesgos físicosExposicion riesgos físicos
Exposicion riesgos físicos
 
El poder de la palabra bra-robert-dilts
El poder de la palabra bra-robert-diltsEl poder de la palabra bra-robert-dilts
El poder de la palabra bra-robert-dilts
 
Valores, Moral Y Etica
Valores, Moral Y EticaValores, Moral Y Etica
Valores, Moral Y Etica
 
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca Urbina
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca UrbinaEvaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca Urbina
Evaluacion de proyectos ESTUDIO DE MERCADO Gabriel Baca Urbina
 

Más de Eduard Tomàs

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sEduard Tomàs
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAEduard Tomàs
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Eduard Tomàs
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Eduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menosEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 

Más de Eduard Tomàs (20)

Kubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why'sKubernetes: Do's, don'ts and why's
Kubernetes: Do's, don'ts and why's
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDAKCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
 
Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)Containers en .NET (Dot Net 2018 - Spain)
Containers en .NET (Dot Net 2018 - Spain)
 
Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)Esos contenedores, ¡a producción! (Commit Conf 2018)
Esos contenedores, ¡a producción! (Commit Conf 2018)
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Azure functions
Azure functionsAzure functions
Azure functions
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 

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

  • 1. Async/Await: Programación asíncrona para dummies Eduard Tomàs Technology Specialist – raona http://www.raona.com @eiximenis
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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