Sobes.tech
Middle

¿Cómo funciona un método asíncrono en C#?

sobes.tech AI

Respuesta de la IA

El método asíncrono en C# permite realizar operaciones que pueden tomar un tiempo prolongado (por ejemplo, entrada/salida, solicitudes de red) sin bloquear el hilo principal de ejecución.

Al llamar a un método asíncrono marcado con la palabra clave async, el control se transfiere al código que lo llamó hasta que la operación asíncrona finalice. La operación se realiza en segundo plano (por ejemplo, usando un grupo de hilos o mecanismos del sistema de entrada/salida).

La palabra clave await dentro del método asíncrono indica dónde la operación asíncrona puede ser suspendida. Cuando la ejecución alcanza await, el control se devuelve al código que llamó, y la continuación del método se programa para ejecutarse cuando la operación esperada finalice.

El resultado de la operación asíncrona (o una excepción) se pasa de vuelta a la continuación del método asíncrono, donde se procesa. El estado del método asíncrono es gestionado automáticamente por el compilador de C#, que lo transforma en una máquina de estados finita.

public async Task<string> GetDataAsync(string url)
{
    // Simulación de una operación de entrada/salida prolongada
    using (var httpClient = new HttpClient())
    {
        string result = await httpClient.GetStringAsync(url); // await: la ejecución del método puede ser suspendida
        return result;
    }
}

// Ejemplo de llamada a un método asíncrono
public async Task ProcessDataAsync(string url)
{
    Console.WriteLine("Inicio de la carga de datos...");
    string data = await GetDataAsync(url); // Espera a que la operación asíncrona finalice
    Console.WriteLine("Datos cargados: " + data.Length + " caracteres.");
}