2010-04-14 18 views
5

Estoy usando el siguiente código para actualizar mi barra de progreso.Cómo actualizar la barra de progreso en tiempo de ejecución usando C#

 ProgressBar.Visible = true; 
     ProgressBar.Minimum = 1; 
     ProgressBar.Maximum = PortCount; 
     ProgressBar.Value = 1; 
     ProgressBar.Step = 1; 

     int intdata = 5; 
     for (int x = 1; x <= intdata; x++) 
      { 
      ProgressBar.PerformStep(); 
     } 

     MessageBox.Show("Done"); 

Pero no se actualiza durante el tiempo de ejecución. ¿Es porque la barra de progreso está en el mismo hilo? De ser así, cómo actualizar este progreso desde otro hilo. Ayuda ...

Respuesta

6

No está dando el mensaje de tiempo de bomba para actualizar el control.

Aunque ninguno de estos son malos, puede hacerlo:

  • Refresh llamada en el control de llamadas
  • Application.DoEvents
6

Es esto Windows Forms? Llamar a Refresh() en ProgressBar debería hacerlo. También podría usar Application.DoEvents, que le permitirá a su UI responder a la entrada del usuario en lugar de bloquear durante el proceso.

Una mejor idea sería utilizar la clase BackgroundWorker. Haga el trabajo en el subproceso de fondo y envíe actualizaciones de progreso al subproceso de interfaz de usuario a través del método ReportProgress. Esto mantiene su subproceso de interfaz de usuario sensible.

+0

+1 para BackgroundWorker. – leppie

Cuestiones relacionadas