La programación asíncrona es una técnica que permite que un programa continúe ejecutándose mientras se realizan operaciones que pueden tardar un tiempo en completarse, como la lectura de archivos, la consulta a bases de datos o la comunicación con servicios web. En C#, la programación asíncrona se maneja principalmente mediante las palabras clave async y await.

Conceptos Clave

  1. Tareas (Tasks): Representan una operación asíncrona que puede devolver un valor.
  2. Palabra clave async: Indica que un método es asíncrono.
  3. Palabra clave await: Pausa la ejecución del método asíncrono hasta que la tarea se complete.

Ejemplo Básico

Método Asíncrono

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Inicio del programa");
        await OperacionAsincrona();
        Console.WriteLine("Fin del programa");
    }

    static async Task OperacionAsincrona()
    {
        Console.WriteLine("Inicio de la operación asíncrona");
        await Task.Delay(2000); // Simula una operación que tarda 2 segundos
        Console.WriteLine("Fin de la operación asíncrona");
    }
}

Explicación del Código

  1. Método Main: Es el punto de entrada del programa. Se declara como async para poder usar await dentro de él.
  2. await OperacionAsincrona(): Llama al método OperacionAsincrona y espera a que se complete antes de continuar.
  3. Método OperacionAsincrona: También se declara como async y utiliza await Task.Delay(2000) para simular una operación que tarda 2 segundos.

Ejercicio Práctico

Ejercicio 1: Llamada a una API Simulada

Crea un programa que simule una llamada a una API que tarda 3 segundos en responder.

Instrucciones

  1. Crea un método asíncrono llamado LlamadaApiSimulada.
  2. Dentro del método, usa Task.Delay(3000) para simular la espera.
  3. Llama al método desde Main y muestra mensajes antes y después de la llamada.

Solución

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Inicio del programa");
        await LlamadaApiSimulada();
        Console.WriteLine("Fin del programa");
    }

    static async Task LlamadaApiSimulada()
    {
        Console.WriteLine("Llamada a la API iniciada...");
        await Task.Delay(3000); // Simula una llamada a la API que tarda 3 segundos
        Console.WriteLine("Llamada a la API completada.");
    }
}

Retroalimentación y Consejos

  • Error Común: Olvidar usar await al llamar a un método asíncrono. Esto hará que el método se ejecute de manera síncrona.
  • Consejo: Siempre verifica que los métodos asíncronos se llamen con await para evitar bloqueos en la interfaz de usuario o en el flujo del programa.

Resumen

En esta sección, hemos aprendido los conceptos básicos de la programación asíncrona en C#, incluyendo el uso de las palabras clave async y await. También hemos visto un ejemplo práctico y realizado un ejercicio para reforzar los conceptos. La programación asíncrona es esencial para crear aplicaciones eficientes y receptivas, especialmente cuando se trata de operaciones que pueden tardar en completarse.

En el próximo módulo, exploraremos cómo trabajar con datos en C#, incluyendo la entrada/salida de archivos y la conectividad con bases de datos.

© Copyright 2024. Todos los derechos reservados