Async y Await en C#
Los modificadores async y await en C# facilitan la escritura de código
asincrónico, manteniéndolo legible y estructurado como si fuera síncrono.
Permiten ejecutar operaciones que tardan (como I/O, llamadas HTTP o bases de datos) sin bloquear el hilo
principal, mejorando la capacidad de respuesta de aplicaciones.
Declarar métodos async
Un método marcado como async devuelve generalmente Task o
Task<T>.
Dentro de él, se puede usar await para esperar asincrónicamente el resultado.
public async TaskObtenerDatosAsync() { HttpClient cliente = new HttpClient(); string datos = await cliente.GetStringAsync("https://api.example.com/data"); return datos; }
El uso de await libera el hilo mientras espera el resultado.
Llamar a métodos async
Puedes llamar al método y esperar su resultado de forma asincrónica.
string resultado = await ObtenerDatosAsync();
Console.WriteLine(resultado);
Esto evita bloqueos, especialmente en aplicaciones UI o servicios web.
Buenas Prácticas
Marca solo los métodos que usan await como async.
Evita usar .Result o .Wait() para prevenir deadlocks.
Usa ConfigureAwait(false) en librerías para evitar capturar contextos innecesarios.
Maneja excepciones con try-catch.