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
- Tareas (Tasks): Representan una operación asíncrona que puede devolver un valor.
- Palabra clave
async
: Indica que un método es asíncrono. - 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
- Método
Main
: Es el punto de entrada del programa. Se declara comoasync
para poder usarawait
dentro de él. await OperacionAsincrona()
: Llama al métodoOperacionAsincrona
y espera a que se complete antes de continuar.- Método
OperacionAsincrona
: También se declara comoasync
y utilizaawait 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
- Crea un método asíncrono llamado
LlamadaApiSimulada
. - Dentro del método, usa
Task.Delay(3000)
para simular la espera. - 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.
Curso de Programación en C#
Módulo 1: Introducción a C#
- Introducción a C#
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control
Módulo 3: Programación Orientada a Objetos
- Clases y Objetos
- Métodos
- Constructores y Destructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Conceptos Avanzados de C#
- Interfaces
- Delegados y Eventos
- Genéricos
- Colecciones
- LINQ (Consulta Integrada en el Lenguaje)
- Programación Asíncrona
Módulo 5: Trabajando con Datos
Módulo 6: Temas Avanzados
- Reflexión
- Atributos
- Programación Dinámica
- Gestión de Memoria y Recolección de Basura
- Multihilo y Programación Paralela
Módulo 7: Construcción de Aplicaciones
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Estándares de Codificación y Mejores Prácticas
- Patrones de Diseño
- Pruebas Unitarias
- Revisión y Refactorización de Código