¿Cómo se usa la palabra clave await en C#?
sobes.tech AI
Respuesta de la IA
La palabra clave await se usa en C# para esperar de manera no bloqueante a que finalice una operación asíncrona.
El uso de await solo es posible dentro de métodos asíncronos marcados con el modificador async.
Cuando la ejecución alcanza la instrucción await, el flujo de control regresa al llamador, y el método se "suspende" hasta que la tarea esperada finalice. Después de que la tarea termina, la ejecución del método se reanuda desde donde se detuvo.
Esto permite liberar el hilo que llama (por ejemplo, el hilo de la interfaz de usuario o el hilo del servidor web) para realizar otras tareas, mejorando la capacidad de respuesta y la escalabilidad de la aplicación.
public async Task<string> GetDataAsync()
{
// Simulación de una operación asíncrona prolongada
await Task.Delay(2000);
return "Datos recibidos";
}
public async Task ProcessDataAsync()
{
Console.WriteLine("Inicio del procesamiento...");
string result = await GetDataAsync(); // Espera a que GetDataAsync termine sin bloquear
Console.WriteLine($"Resultado: {result}");
Console.WriteLine("Procesamiento terminado.");
}
La palabra clave await puede aplicarse a:
- Tareas (Task, Task<T>, ValueTask, ValueTask<T>): Escenario más común.
- tipos awaitables: Objetos que tienen un método
GetAwaiter(), que devuelve un tipo con métodosIsCompleted,GetResult()yOnCompleted()(para soportar la continuación).
El uso de await hace que el código asíncrono sea más legible y parecido al código sincrónico, eliminando la necesidad de escribir manualmente código de continuación o usar callbacks.