using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace TaskParallel { class Program { static void Main(string[] args) { var t1 = Task.Factory.StartNew(() => Proceso1(1, 1500)); var t2 = Task.Factory.StartNew(() => Proceso1(2, 3000)); var t3 = Task.Factory.StartNew(() => Proceso1(3, 1000)); Console.WriteLine("Presione una tecla para salir"); Console.ReadKey(); } static void Proceso1(int id, int sleepTime) { Console.WriteLine("Tarea {0} Iniciada", id); Thread.Sleep(sleepTime); Console.WriteLine("Tarea {0} Terminada", id); } static void Proceso2(int id, int sleepTime) { Console.WriteLine("Tarea {0} Iniciada del Proceso 2", id); Thread.Sleep(sleepTime); Console.WriteLine("Tarea {0} Terminada del Proceso 2", id); } } }
Ejecutar y esperar a que termine otra tarea.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace TaskParallel { class Program { static void Main(string[] args) { //Ejecutar y esperar a que termine otra tarea var t1 = Task.Factory.StartNew(() => Proceso1(1,1500)).ContinueWith((prevTask)=> Proceso2(1,1000)); var t2 = Task.Factory.StartNew(() => Proceso1(2, 3000)); var t3 = Task.Factory.StartNew(() => Proceso1(3, 1000)); //Ejecutar y esperar que terminen todas las tareas //var tasklist = new List<Task> { t1, t2, t3 }; //Task.WaitAll(tasklist.ToArray()); Console.WriteLine("Presione una tecla para salir"); Console.ReadKey(); } static void Proceso1(int id, int sleepTime) { Console.WriteLine("Tarea {0} Iniciada", id); Thread.Sleep(sleepTime); Console.WriteLine("Tarea {0} Terminada", id); } static void Proceso2(int id, int sleepTime) { Console.WriteLine("Tarea {0} Iniciada del Proceso 2", id); Thread.Sleep(sleepTime); Console.WriteLine("Tarea {0} Terminada del Proceso 2", id); } } }