Ésta es la manera anónima para crear un hilo en C#, que acaba de empezar la rosca (porque está utilizando Start();) siguientes 2 formas son equivalentes. Si necesita la variable Thread para hacer algo (por ejemplo, bloquear el hilo de llamada llamando a thread0.join()), entonces usa el segundo.
new Thread(() =>
{
Console.WriteLine("Anonymous Thread job goes here...");
}).Start();
var thread0= new Thread(() =>
{
Console.WriteLine("Named Thread job goes here...");
});
thread0.Start();
Ahora la parte del método Thread. Si ves la declaración del hilo, tenemos lo siguiente (omití otros 3).
public Thread(ThreadStart start);
El hilo toma un delegado como parámetro. Delegado es referencia a un método. Entonces Thread toma un parámetro que es un delegado. ThreadStart se declara así.
public delegate void ThreadStart();
Significa que puede pasar cualquier método al hilo que devuelva el vacío y no toma ningún parámetro. Entonces los siguientes ejemplos son equivalentes.
ThreadStart del = new ThreadStart(ThreadMethod);
var thread3 = new Thread(del);
thread3.Start();
ThreadStart del2 = ThreadMethod;
var thread4 = new Thread(del2);
thread4.Start();
var thread5 = new Thread(ThreadMethod);
thread5.Start();
//This must be separate method
public static void ThreadMethod()
{
Console.WriteLine("ThreadMethod doing important job...");
}
Ahora que creemos que el método ThreadMethod está haciendo poco trabajo podemos hacerlo a nivel local y anónimo. Por lo tanto, no necesitamos el método ThreadMethod en absoluto.
new Thread(delegate()
{
Console.WriteLine("Anonymous method Thread job goes here...");
}).Start();
Ves después delegado a durar entre llaves es equivalente a nuestro ThreadMethod(). Puede acortar aún más el código anterior introduciendo la declaración de Lambda (consulte MSDN). Esto es solo lo que está usando y vea cómo se ha terminado de la siguiente manera.
new Thread(() =>
{
Console.WriteLine("Lambda statements for thread goes here...");
}).Start();
crea un nuevo objeto de hilo que pasa en un método anónimo (un delegado) y lo inicia. Eso es todo. Crear métodos anónimos es esencialmente una forma de pasar un bloque de código como un parámetro de delegado –