using System; using System.Threading; namespace Recetas.CSharp.Cap04.R0406 { public sealed class UsoDelegadoParameterizedThreadStart { public static void Main() { // Creación de una nueva instancia de `Thread`. // Al constructor le pasamos una instancia del delegado // ParameterizedThreadStart. Este último encapsula al // método Tarea1: Thread threadNuevo = new Thread ( new ParameterizedThreadStart (Tarea1) ); // Aquí utilizamos la versión sobrecargad del método // Start que recibe como argumento una instancia de // `Object`: threadNuevo.Start (7); // Creación de una instancia de UsoDelegadoParameterizedThreadStart: UsoDelegadoParameterizedThreadStart obj = new UsoDelegadoParameterizedThreadStart(); // Creamos otro thread: threadNuevo = new Thread (obj.Tarea2); // invocamos de nuevo al método Start sobre // el nuevo thread: threadNuevo.Start ("Blog xCSw"); } // Método estático: public static void Tarea1(object datos) { Console.WriteLine ("\nInicio ejecución método estático sobre un nuevo thread."); Console.WriteLine ("Dato pasado como argumento: `{0}`.", datos); } // Método de instancia: public void Tarea2(object datos) { Console.WriteLine ("\nInicio ejecución método de instancia sobre un nuevo thread."); Console.WriteLine ("Dato pasado como argumento: `{0}`.", datos); } } }