using System; using System.Threading; using System.Threading.Tasks; namespace Recetas.Multithreading.R0401 { public class TareasAsincronicas { public static void Main() { Console.WriteLine (); // Creación de dos objetos Thread: Task tarea1 = new Task( () => TareaAsincronica("Tarea 1")); Task tarea2 = new Task( () => TareaAsincronica("Tarea 2")); // Inicio ejecución de las dos tareas recién creadas: tarea2.Start(); tarea1.Start(); // Uso del método static Run para la ejecución otra tarea: Task.Run( () => TareaAsincronica("Tarea 3")); // Uso de StartNew de Factory para crear dos tareas más: Task.Factory.StartNew( () => TareaAsincronica("Tarea 4")); Task.Factory.StartNew( () => TareaAsincronica("Tarea 5"), TaskCreationOptions.LongRunning); // Retardo de ejecución de Main de un segundo: Thread.Sleep (TimeSpan.FromSeconds(1)); Console.WriteLine (); } public static void TareaAsincronica(string nombreTarea) { Console.WriteLine ("La tarea `{0}` se ejecuta en el thread con ID {1} " + "¿Es un thread del pool de threads?: {2}", nombreTarea, Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsThreadPoolThread); } } }