Task en C#
La clase Task
en C# representa una operación asincrónica que puede ejecutarse en segundo plano.
Permite escribir código no bloqueante y aprovechar mejor los recursos del sistema, mejorando la capacidad de
respuesta de aplicaciones cliente y la escalabilidad de servidores.
Crear y ejecutar una Task
Puedes iniciar una Task para ejecutar una acción en paralelo.
Task tarea = Task.Run(() => { Console.WriteLine("Ejecutando en un hilo diferente."); });
El método Run
programa el trabajo en el pool de hilos.
Task con resultado
Puedes usar Task<T>
para devolver valores.
TasktareaSuma = Task.Run(() => { return 5 + 3; }); int resultado = tareaSuma.Result; Console.WriteLine($"Resultado: {resultado}");
Aunque puedes usar .Result
, es mejor await en métodos async.
Esperar una Task
En métodos asincrónicos, puedes usar await
para esperar sin bloquear.
public async TaskObtenerSumaAsync() { return await Task.Run(() => 5 + 3); }
Esto libera el hilo mientras la tarea se completa.
Buenas Prácticas
Usa Task para operaciones costosas o I/O asincrónico.
Evita .Result
o .Wait()
en código UI para prevenir deadlocks.
Maneja excepciones usando try/catch o Task.Exception
.
Usa ConfigureAwait(false)
en librerías para evitar capturar contextos innecesarios.