CSharp
Tutorial CSharp: Uso de async y await
CSharp async await: manejo asincrónico. Aprende a manejar asincronía en CSharp utilizando async y await con ejemplos detallados.
Aprende CSharp y certifícateasync
y await
son palabras clave en C# que permiten a los desarrolladores escribir código asincrónico de manera más sencilla. Este código asincrónico es útil cuando se están realizando operaciones que pueden tardar un tiempo en completarse, como las solicitudes de red, las operaciones de disco o cualquier otro tipo de E/S (entrada/salida). En lugar de bloquear la ejecución hasta que se complete la operación (lo que se conoce como operación síncrona), el uso de async
y await
permite que esas operaciones se realicen en segundo plano, permitiendo a la ejecución principal continuar con otras tareas. Esto puede ayudar a mejorar la eficiencia y la capacidad de respuesta de una aplicación.
A continuación, se presentan algunos conceptos clave sobre async
y await
:
async
: Es un modificador que se aplica a un método para indicar que puede tener operaciones asincrónicas. Los métodos marcados conasync
siempre devolverán unTask
oTask<T>
(para métodos con un valor de retorno). Importante: un métodoasync
por sí solo no hace nada de forma asincrónica. Simplemente permite el uso de la palabra claveawait
dentro de él.await
: Es un operador que se utiliza para suspender la ejecución de un métodoasync
hasta que la tarea asincrónica en la que se usaawait
se complete. En esencia,await
indica: "Espera aquí hasta que esta operación asincrónica esté terminada, luego continúa con el código que sigue". Importante:await
solo puede usarse en un método que esté marcado conasync
.
Un ejemplo sencillo:
using System.Threading.Tasks;
public async void LlamarMetodoAsync()
{
Console.WriteLine("Inicio del método async.");
await MetodoAsincrono();
Console.WriteLine("Final del método async.");
}
public async Task MetodoAsincrono()
{
Console.WriteLine("Inicio del método asincrónico.");
await Task.Delay(1000); // Simula una pausa en la ejecución durante 1 segundo
Console.WriteLine("Final del método asincrónico.");
}
LlamarMetodoAsync();
// Imprimirá, en orden:
// Inicio del método async.
// Inicio del método asincrónico.
// Final del método asincrónico.
// Final del método async.
En este caso, cuando se llama a LlamarMetodoAsync
, la ejecución procede como sigue:
- Imprime "Inicio del método async."
- Llama a
MetodoAsincrono
. - Dentro de
MetodoAsincrono
, imprime "Inicio del método asincrónico." - Se encuentra con
await Task.Delay(1000);
. Aquí es donde la magia delawait
sucede. En lugar de bloquear la ejecución del método y esperar 1000 milisegundos, la ejecución deMetodoAsincrono
se suspende y la control se devuelve aLlamarMetodoAsync
. - Después de 1000 milisegundos, la ejecución de
MetodoAsincrono
se reanuda, imprimiendo "Final del método asincrónico." - Una vez que
MetodoAsincrono
ha terminado completamente, la ejecución se reanuda enLlamarMetodoAsync
, imprimiendo "Final del método async."
Es importante recordar que async
y await
no crean nuevos hilos; en su lugar, hacen un uso más eficiente de los hilos existentes. Esto es especialmente útil en aplicaciones con interfaces de usuario, donde bloquear el hilo de la interfaz de usuario (por ejemplo, con operaciones de E/S pesadas) puede hacer que la aplicación parezca congelada. Al utilizar async
y await
, esas operaciones de E/S pueden realizarse en segundo plano, permitiendo que la interfaz de usuario permanezca receptiva.
Otros ejercicios de programación de CSharp
Evalúa tus conocimientos de esta lección Uso de async y await con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
CRUD en C# de modelo Customer sobre una lista
Arrays y listas
Objetos
Excepciones
Eventos
Lambdas
Diccionarios en C#
Variables y constantes
Tipos de datos
Herencia
Operadores
Uso de consultas LINQ
Clases y encapsulación
Uso de consultas LINQ
Excepciones
Control de flujo
Eventos
Diccionarios
Tipos de datos
Conjuntos, colas y pilas
Lambdas
Conjuntos, colas y pilas
Uso de async y await
Tareas
Constructores y destructores
Operadores
Arrays y listas
Polimorfismo
Polimorfismo
Variables y constantes
Proyecto colecciones y LINQ en C#
Clases y encapsulación
Creación de proyecto C#
Uso de async y await
Funciones
Delegados
Delegados
Constructores y destructores
Objetos
Control de flujo
Funciones
Tareas
Proyecto sintaxis en C#
Herencia C Sharp
OOP en C Sharp
Diccionarios
Introducción a C#
Todas las lecciones de CSharp
Accede a todas las lecciones de CSharp y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A C#
Introducción Y Entorno
Creación De Proyecto C#
Introducción Y Entorno
Variables Y Constantes
Sintaxis
Tipos De Datos
Sintaxis
Operadores
Sintaxis
Control De Flujo
Sintaxis
Funciones
Sintaxis
Estructuras De Control Iterativo
Sintaxis
Interpolación De Strings
Sintaxis
Estructuras De Control Condicional
Sintaxis
Manejo De Valores Nulos
Sintaxis
Clases Y Encapsulación
Programación Orientada A Objetos
Objetos
Programación Orientada A Objetos
Constructores Y Destructores
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Genéricos
Programación Orientada A Objetos
Métodos Virtuales Y Sobrecarga
Programación Orientada A Objetos
Clases Abstractas
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Propiedades Y Encapsulación
Programación Orientada A Objetos
Métodos De Extensión
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Clases Parciales
Programación Orientada A Objetos
Miembros Estáticos
Programación Orientada A Objetos
Tuplas Y Tipos Anónimos
Programación Orientada A Objetos
Arrays Y Listas
Colecciones Y Linq
Diccionarios
Colecciones Y Linq
Conjuntos, Colas Y Pilas
Colecciones Y Linq
Uso De Consultas Linq
Colecciones Y Linq
Linq Avanzado
Colecciones Y Linq
Colas Y Pilas
Colecciones Y Linq
Conjuntos
Colecciones Y Linq
Linq Básico
Colecciones Y Linq
Delegados Funcionales
Programación Funcional
Records
Programación Funcional
Expresiones Lambda
Programación Funcional
Linq Funcional
Programación Funcional
Fundamentos De La Programación Funcional
Programación Funcional
Pattern Matching
Programación Funcional
Testing Unitario Con Xunit
Testing
Excepciones
Excepciones
Delegados
Programación Asíncrona
Eventos
Programación Asíncrona
Lambdas
Programación Asíncrona
Uso De Async Y Await
Programación Asíncrona
Tareas
Programación Asíncrona
Objetivos de aprendizaje de esta lección
- Comprender el propósito y beneficios de usar
async
yawait
en C#. - Saber cómo marcar un método como
async
y qué tipo de retorno debe tener. - Entender cómo funciona el operador
await
para suspender y reanudar la ejecución de métodos asincrónicos. - Familiarizarse con el concepto de programación asincrónica y su utilidad en operaciones de E/S y aplicaciones con interfaces de usuario.
- Aprender a escribir código asincrónico para mejorar la eficiencia y capacidad de respuesta de las aplicaciones.