Comprender los subprocesos y las tareas
Explore los subprocesos y las tareas para gestionar el procesamiento paralelo en C#
Comprender los subprocesos y las tareas es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 5. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 5 lecciones en total.
Introducción a los hilos y las tareas
Comprender los hilos y las tareas
¡Bienvenido a la siguiente lección! En esta lección, aprenderá sobre los hilos y las tareas en C#, que permiten ejecutar varias operaciones simultáneamente para mejorar el rendimiento. ¡Comencemos!

¿Qué son los hilos?
¿Qué son los hilos?
Los hilos son el mecanismo mediante el cual se ejecutan varias operaciones simultáneamente. Cada hilo representa un flujo de control independiente en su aplicación.
Punto clave: Los hilos mejoran el rendimiento al utilizar varios núcleos del procesador para la ejecución simultánea.
Crear e iniciar hilos
Crear e iniciar hilos
Puede crear e iniciar hilos mediante la clase Thread. Ejemplo:
using System;
using System.Threading;
class Program {
static void Main() {
Thread thread = new Thread(PrintNumbers);
thread.Start();
Console.WriteLine("Main thread is running...");
}
static void PrintNumbers() {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Thread.Sleep(1000); // Pause for 1 second
}
}
}
Introducción a las tareas
Introducción a las tareas
Las tareas proporcionan una abstracción de más alto nivel para la programación concurrente que los hilos. La clase Task forma parte de Task Parallel Library (TPL) en C#.
Ejemplo: Crear e iniciar una tarea:
Consejo: Las tareas son más fáciles de administrar y ofrecen un mejor control de errores que los hilos.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Task task = Task.Run(() => {
for (int i = 1; i <= 5; i++) {
Console.WriteLine(i);
Task.Delay(1000).Wait();
}
});
Console.WriteLine("Main thread is running...");
task.Wait(); // Wait for the task to complete
}
}
Usar Parallel.For y Parallel.ForEach
Usar Parallel.For y Parallel.ForEach
La clase Parallel de C# permite ejecutar bucles en paralelo para mejorar el rendimiento. Ejemplo:
Punto clave: Utilice Parallel.For y Parallel.ForEach para tareas con un uso intensivo de datos que puedan ejecutarse simultáneamente.
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Parallel.For(0, 5, i => {
Console.WriteLine($"Processing {i} on thread {Task.CurrentId}");
});
Console.WriteLine("All tasks completed.");
}
}
Controlar excepciones en tareas
Controlar excepciones en tareas
Puede capturar excepciones en las tareas mediante un bloque try-catch o la propiedad Task.Exception. Ejemplo:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
try {
Task task = Task.Run(() => {
throw new InvalidOperationException("Task failed!");
});
task.Wait();
} catch (AggregateException ex) {
Console.WriteLine("Error: " + ex.InnerException.Message);
}
}
}
Desafío práctico
Desafío práctico
Cree un programa que inicie varias tareas para procesar números en paralelo y muestre sus cuadrados. Ejemplo:
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
int[] numbers = { 1, 2, 3, 4, 5 };
Parallel.ForEach(numbers, number => {
Console.WriteLine($"Square of {number}: {number * number}");
});
}
}
Buenas prácticas para hilos y tareas
Buenas prácticas para hilos y tareas
Estas son algunas buenas prácticas:
- Prefiera
Tasken lugar deThreadpara la concurrencia de alto nivel. - Utilice las clases
Parallelpara operaciones con un uso intensivo de datos. - Controle las excepciones correctamente para garantizar aplicaciones robustas.
- Limite el número de hilos o tareas para evitar la competencia por los recursos.
Consejo: Utilice programación asíncrona cuando predominen las operaciones de E/S, y utilice hilos o tareas para tareas limitadas por la CPU.
¡Excelente trabajo!
¡Excelente trabajo!
¡Enhorabuena! Ha aprendido los conceptos básicos de los hilos y las tareas para la programación concurrente en C#. En la próxima lección, profundizaremos en los delegados y las expresiones lambda, dos funciones muy potentes para la programación funcional. ¡Sigamos programando!

Preguntas frecuentes
¿La lección «Comprender los subprocesos y las tareas» es gratis?
Sí — el texto completo de «Comprender los subprocesos y las tareas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 5 lecciones en total.
¿Qué aprenderé en «Comprender los subprocesos y las tareas»?
Explore los subprocesos y las tareas para gestionar el procesamiento paralelo en C# Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 5.
¿Cuánto tiempo toma la lección «Comprender los subprocesos y las tareas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Genéricos en C#
- Async y await: trabajo con código asíncrono
- Comprender los subprocesos y las tareas
- Exploración de delegados y lambdas
- Comprender la reflexión en C#