Acerca de los parámetros del hilo (2.0), el "valor de retorno" y la suspensión del hilo
1. Parámetros del hilo:
A veces desea pasar información al hilo auxiliar. Aquí necesita usar
el ejemplo del delegado ParameterizedThreadStart:
private void btRunThread_Click(object sender, EventArgs e)
{
Thread t = new Thread(newParameterizedThreadStart
(this.ThreadRun));
(100
);
hilo privado vacío (objeto o)
{
this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); })
;
2. Se pueden lograr funciones similares a través de servidores proxy. Ejemplo:
class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod)
thread thread = new Thread(new ThreadStart(tc. ThreadRun ));
Console.WriteLine("segundo hilo iniciado");
thread.Start();
thread.Join
()
Console.WriteLine("segundo hilo completado")
;
private static void DlgMethod(int i)
{
Console.WriteLine
("Resultado del segundo hilo:{0}", i)
;
delegado público void MyDlg(int i);
clase ThreadClass
{
privado MyDlg myDlg;
public ThreadClass(MyDlg pDlg)
{
this.myDlg = pDlg
}
public void ThreadRun()
{
int total = 0
para (int i = 0; i < 100; i++)
{
total += i
}
if
(miDlg! = nulo)
{
miDlg
(total)
;
3. Suspensión de subprocesos:
(1) Método .join
Notas de MSDN: mientras se continúa ejecutando el procesamiento estándar de envío de mensajes COM y SendMessage, el subproceso que realiza la llamada se bloquea hasta que finaliza un subproceso.
Estaba confundido y lo probé yo mismo. Parece que después de que el hilo llama al método de unión, el hilo toma todo el tiempo de la CPU hasta que se completa la tarea del hilo. ¿No sabes si este es el caso?
(2). El método de aborto
finaliza inmediatamente el hilo
(3). Ejemplo de definición del identificador
:
clase Programa
{
privado estático bool parada
Principal(cadena[] argumentos)
{
parada = falso;
Hilo t = nuevo hilo (nuevo ThreadStart (ThreadRun));
t.Start
()
;
Consola.Leer();
}
static void ThreadRun()
{
while (!stop)
{
Console.WriteLine
("Hacer un poco de trabajo..."
)
;
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html