ThreadStart:
El delegado ThreadStart se define como void ThreadStart(), lo que significa que el método ejecutado no puede tener parámetros. HiloStart hiloIniciar=nuevo HiloIniciar(Calcular); Hilo de hilo=nuevo Hilo(hiloInicio); hilo. Inicio(); vacío público Calculate() { doble Diámetro=0,5; Console.Write("El área del círculo con diámetro de {0} es {1}"Diameter,Diameter*Math.PI); } Aquí usamos un delegado que define un tipo ThreadStart, que define el método que el hilo debe ejecutar: Calcular, en el que se calcula la circunferencia de un círculo con un diámetro de 0,5, y se obtiene. Esto constituye el ejemplo más sencillo de multihilo, que en muchos casos es suficiente
ParameterThreadStart: ParameterThreadStart se define como void ParameterizedThreadStart(estado del objeto), y la función de inicio del hilo definida usando este delegado puede aceptar un parámetro de entrada, por ejemplo:
Hilo ParameterizadoInicio hijoIniciar=nuevo Hilo ParameterizadoIniciar(Calcular) Hilo de hilo=nuevo Hilo() ; hilo. Inicio (0,9); empty público Calculate(object arg)
{ doble Diámetro=doble(arg); Console.Write("El área del círculo con diámetro de {0} es {1}"Diameter,Diameter*Math.PI);
}
El método Calculate tiene un parámetro de tipo objeto, aunque solo hay un parámetro, y también es un tipo objeto, y aún necesita ser convertido al usarlo, pero afortunadamente pueden existir parámetros, y combinando múltiples parámetros en una clase, y luego pasando la instancia de esta clase como parámetro, puedes lograr una transferencia de múltiples parámetros. Como qué:
clase AddParams
{ público int a, b;
public AddParams(int numb1, int numb2) { A = numb1; b = numb2; }
} #endregion
Programa de la clase
{ vacío estático Main(string[] args) { Console.WriteLine("***** Añadir con objetos Hilos *****"); Console.WriteLine("ID del hilo en Main(): {0}", Hilo.Hilocorriente.HiloGestionadoId);
AddParams ap = nuevos AddParams(10, 10); Hilo t = nuevo Hilo(nuevo ParameterizedThreadStart(Añadir)); t.Start(ap); Consola.ReadLine(); }
#region Método de Añadir static void Add(object data) { si (los datos son AddParams) { Console.WriteLine("ID del hilo en Main(): {0}", Hilo.Hilocorriente.HiloGestionadoId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} es {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |