Sobes.tech
Junior

¿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:

  1. Tareas (Task, Task<T>, ValueTask, ValueTask<T>): Escenario más común.
  2. tipos awaitables: Objetos que tienen un método GetAwaiter(), que devuelve un tipo con métodos IsCompleted, GetResult() y OnCompleted() (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.