C# LanguageAsíncrono-espera


Introducción

En C #, un método declarado async no se bloqueará dentro de un proceso síncrono, en caso de que esté utilizando operaciones basadas en E / S (por ejemplo, acceso web, trabajo con archivos, ...). El resultado de dichos métodos marcados asíncronos puede esperarse mediante el uso de la palabra clave await .

Observaciones

Un método async puede devolver void , Task o Task<T> .

La Task tipo de retorno esperará a que finalice el método y el resultado se void . Task<T> devolverá un valor del tipo T después de que se complete el método.

async métodos async deben devolver Task o Task<T> , en lugar de void , en casi todas las circunstancias. async void métodos de async void no se pueden await , lo que conduce a una variedad de problemas. El único escenario en el que un async debe devolver un void es en el caso de un controlador de eventos.

async / await funciona al transformar su método async en una máquina de estado. Lo hace creando una estructura detrás de escena que almacena el estado actual y cualquier contexto (como las variables locales), y expone un método MoveNext() para avanzar los estados (y ejecutar cualquier código asociado) cada vez que se completa un proceso esperado.

Asíncrono-espera Ejemplos relacionados