Foros del Web » Programación para mayores de 30 ;) » .NET »

ProgresBar BackgroundWorker C#

Estas en el tema de ProgresBar BackgroundWorker C# en el foro de .NET en Foros del Web. Que tal amigos.... Tengo este codigo que funciona bien peroo lo malo esque el progres bar da vueltas 2 veces, se llena una ves y ...
  #1 (permalink)  
Antiguo 29/03/2010, 18:40
Avatar de DarkWatch  
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 8 meses
Puntos: 2
ProgresBar BackgroundWorker C#

Que tal amigos....

Tengo este codigo que funciona bien peroo lo malo esque el progres bar da vueltas 2 veces, se llena una ves y vuelve a comenzar de nuevo alguien sabe cual es el problema o porque esta trabajando asi.

Código:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            for (int i = 0; i < progres.Maximum; i++)
            {
                if (bw.CancellationPending == true)
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    System.Threading.Thread.Sleep(10);
                    bw.ReportProgress(i);
                }
            }
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            this.lbl.Text = Convert.ToString((e.ProgressPercentage * 100) / progres.Maximum) + "%";
            progres.Value = e.ProgressPercentage;
        }
que alguien me explique


DarkWatch
  #2 (permalink)  
Antiguo 30/03/2010, 09:48
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 19 años, 4 meses
Puntos: 50
Respuesta: ProgresBar BackgroundWorker C#

Esta raro, acabo de probar tu código y no se me repite, yo por lo regular reasigno el sender del evento DoWork a una variable local, por que no pruebas:

Código:
            BackgroundWorker worker = (BackgroundWorker)sender;
            for (int i = 0; i < progres.Maximum; i++)
            {
                if (worker.CancellationPending == true)
                {
                    e.Cancel = true;
                    break;
                }
                else
                {
                    System.Threading.Thread.Sleep(10);
                    worker.ReportProgress(i);
                }
            }
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #3 (permalink)  
Antiguo 30/03/2010, 18:01
Avatar de DarkWatch  
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: ProgresBar BackgroundWorker C#

griacias erick

si use una variable boleana asi executa una ves el codigo

pero no entiendo porque entra al evento 2 veces

nose si sea pero en el progress el maximun tiene mas 20 000 registros

nose si pueda ser eso pero en fin ya lo tengo

Etiquetas: backgroundworker, progresbar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:08.