C sharp - Thread.sleep() problema

   
Vista:

Thread.sleep() problema

Publicado por Roberto titowozza@gmail.com (2 intervenciones) el 13/02/2013 05:29:40
Buen dia. Tengo un ciclo while con el thread.sleep (3000) y cada 3 seg. me imprime mensajes en la pantalla. cada ciclo. Y funciona bien!!

1
2
3
4
5
6
7
8
9
10
11
while (cont <= procesos)
            {
                if (cont == 10 || cont == 20 || cont== 30)
                    lote++;
                int tiempo2 = tiempo.Next(5,10);
                total = total + tiempo2;
                System.Threading.Thread.Sleep(3000);
                Console.WriteLine("Lote No: " + lote);
                Console.WriteLine("Proceso No " + cont );
                Console.WriteLine("Tiempo de Ejecucion " + tiempo2);
}


Pero cuando lo hago con interfaz grafica. En el evento click del boton pongo ese while.


Pero en vez de que vaya imprimiendo cada 3 segundos en cada ciclo. Hace todo los ciclos con sus pausas pero lo imprime en el textbox ya que terminaron todos los ciclos, en realidad si hace las pauses pero no esta imprimiendo despues del sleep() cuando le corresponde este es el codigo del evento click.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private void button1_Click(object sender, EventArgs e)
        {
 
            int procesos, lote = 1, cont = 1, total = 0;
            Random tiempo = new Random();
            procesos = Convert.ToInt32(textBox1.Text);
 
            while (cont <= procesos)
            {
                int tiempo2 = tiempo.Next(3);
 
                if (cont == 10 || cont == 20 || cont == 30)
                    lote++;
 
                total = total + tiempo2;
               System.Threading.Thread.Sleep(3000);
 
                textBox2.Text = textBox2.Text + ("Lote No: " + lote.ToString() + "\r\n");
                textBox2.Text = textBox2.Text + ("Proceso No: " + cont.ToString() + "\r\n");
                textBox2.Text = textBox2.Text + ("Tiempo de Ejecucion " + tiempo2.ToString() + "\r\n");
 
                  textBox2.Text = textBox2.Text + ("\r\n\r\n");
 
                cont++;
 
            }


Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Ella Ilona

Thread.sleep() problema

Publicado por Ella Ilona (7 intervenciones) el 18/02/2013 23:34:25
Ha considerado utilizar:
System.Windows.Forms.Application.DoEvents();
justo antes de threadsleep?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Thread.sleep() problema

Publicado por Roberto (2 intervenciones) el 19/02/2013 05:37:04
Amigo muuchas gracias, Funcionó a la perfección .
Estuve investigando y es que el Thread.sleep() se usa mas bien programas con mas de un hilo y como este programa es simple osea en un solo hilo, bloqueaba todo el programa.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar