Hola.
Estoy intentando montar una clase que sea capaz de lanzar uno de sus métodos en diferente thread.
Esta es la declaración de la clase:
tarea es el objeto Thread para crear el thread en el metodo arranca. El cual ya se encarga de lanzar el start. Como veis el metodo bucle es un bucle que va asignando el contador a una label de la propia clase.
La declaración de los objetos y las propiedades las etiquetas las hago en la clase programa:
crea_etiquetas es llamada desde main, donde despues de crear el form, se "arrancan" los contadores.
Mi problema es que el programa arranca, pero las dos labels se quedan inmóviles a 0. Sin embargo el código de los threads creo que está bien...
Alguna pista?
Estoy intentando montar una clase que sea capaz de lanzar uno de sus métodos en diferente thread.
Esta es la declaración de la clase:
Código (csharp) [Seleccionar]
class contador
{
//public static int _contador = 0;
public Label etiqueta;
public int repeticiones = 100000000;
private Thread tarea;
private void bucle()
{
for (int i = 0; i < repeticiones; i++)
{
etiqueta.Text = i.ToString();
}
Thread.Sleep(100);
}
public void arranca()
{
tarea = new Thread(new ThreadStart(bucle));
tarea.Start();
}
}
tarea es el objeto Thread para crear el thread en el metodo arranca. El cual ya se encarga de lanzar el start. Como veis el metodo bucle es un bucle que va asignando el contador a una label de la propia clase.
La declaración de los objetos y las propiedades las etiquetas las hago en la clase programa:
Código (csharp) [Seleccionar]
public static contador cont1 = new contador();
public static contador cont2 = new contador();
public static void crea_etiquetas()
{
cont1.etiqueta = new Label();
cont2.etiqueta = new Label();
cont1.etiqueta.Size = new System.Drawing.Size(35, 13);
cont2.etiqueta.Size = new System.Drawing.Size(35, 13);
cont1.etiqueta.Text = "0";
cont2.etiqueta.Text = "0";
cont1.etiqueta.Location = new System.Drawing.Point(36, 54);
cont2.etiqueta.Location = new System.Drawing.Point(177, 54);
}
crea_etiquetas es llamada desde main, donde despues de crear el form, se "arrancan" los contadores.
Código (csharp) [Seleccionar]
main()
{
.
.
.
crea_etiquetas();
Application.Run(new Form1());
cont1.arranca();
cont2.arranca();
}
Mi problema es que el programa arranca, pero las dos labels se quedan inmóviles a 0. Sin embargo el código de los threads creo que está bien...
Alguna pista?