Para tener conceptos claros acerca de la programación paralela, recomiendo leer mi artículo anterior "Introducción a la programación paralela"
http://eltavodev.blogspot.com/2013/05/introduccion-la-programacion-paralela.html
Ahora vamos a ver ejemplos de cómo usar paralelismo a través de tareas en .NET, crearemos la siguiente aplicación:
A lo largo del ejemplo vamos a usar tres métodos: TareaA(), TareaB, TareaC(), tarea A, tiene un tiempo de retardo para efectos del ejercicio:
private void TareaA() { Thread.Sleep(2000); MessageBox.Show("Se ejecutó la tárea A"); }
En nuestro primer botón "Task", vamos a crear una tarea indicándole que debe ejecutar nuestro método TareaA, e iniciamos la tarea:
Task t = new Task(this.TareaA); t.Start();
También podemos crear tareas que ejecuten múltiples instrucciones:
Task t = Task.Factory.StartNew(() => { this.TareaA(); int resultado = 1 + 2; }); this.TareaB();
También podemos tipar nuestras tareas:
Task<int> t = Task.Factory.StartNew(() => { return 1 + 2; }); MessageBox.Show((t.Result + 1).ToString());
Si queremos especificar una secuencia de ejecución para nuestras tareas, lo podemos hacer mediante la instrucción ContinueWith:
Task.Factory.StartNew(() => { this.TareaA(); }).ContinueWith((t) => TareaB());
Y por último vamos ver como sincronizar el fin de ejecución de todas nuestras tareas, muy útil en caso de que necesitemos ejecutar algún proceso cuando terminen todas las tareas que tenemos ejecutándose en paralelo:
Task t = new Task(this.TareaA); t.Start(); Task t2 = new Task(this.TareaB); t2.Start(); Task t3 = new Task(this.TareaC); t3.Start(); Task.WaitAll(new Task[] { t, t2, t3 }); MessageBox.Show("Se terminó la ejecución de todas las táreas");
Con esto damos por terminado nuestro artículo sobre programación paralela a través de tareas, espero les sea de gran utilidad, a continuación el link de descarga del código de ejemplo:
https://www.dropbox.com/s/gsjhi12w68r1wuq/EjemploPTask.rar
Saludos.