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);
}
}
}