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

ProgressBar y BackgroundWorker

Estas en el tema de ProgressBar y BackgroundWorker en el foro de .NET en Foros del Web. Alguen ha tiene un ejemplo de como mostrar el progreso de mediante un ProgressBar mientras se espera el resultado de una consulta a una base ...
  #1 (permalink)  
Antiguo 14/05/2007, 14:05
Avatar de vecasita  
Fecha de Ingreso: abril-2006
Mensajes: 107
Antigüedad: 18 años
Puntos: 1
ProgressBar y BackgroundWorker

Alguen ha tiene un ejemplo de como mostrar el progreso de mediante un ProgressBar mientras se espera el resultado de una consulta a una base de datos ?.
Lo que tengo es un llamado a un Procedimiento almacenado para llenar una grilla, pero con se demora, quisiera que se mostrara en un ProgressBar que la consulta se esta ejecutando..

Encontre el sgte codigo, pero no me funciona ya que me llena el progressbar cuando la consulta esta terminada y no lo va llenando mientras espera...

Public Sub InicioProceso()

_Contador = ProgressBar1.Minimum

Me.Cursor = Cursors.WaitCursor

BackgroundWorker1.WorkerSupportsCancellation = True

BackgroundWorker1.WorkerReportsProgress = True

BackgroundWorker1.RunWorkerAsync()

End Sub

Public Sub FinProceso()

BackgroundWorker1.CancelAsync()

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
While Not BackgroundWorker1.CancellationPending

If Not BackgroundWorker1.CancellationPending Then

If _Contador = ProgressBar1.Maximum Then _Contador = ProgressBar1.Minimum Else _Contador += 1

Threading.Thread.Sleep(10)

BackgroundWorker1.ReportProgress(_Contador, "Guardando...")

Else

e.Cancel = True

Exit While

End If

End While
End Sub

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If Not (e.Error Is Nothing) Then

' There was an error during the operation.

Dim msg As String = String.Format("Error: {0}", e.Error.Message)

MessageBox.Show(msg)

Else

' The operation completed normally.

ProgressBar1.Value = ProgressBar1.Minimum


End If

Me.Cursor = Cursors.Default

ProgressBar1.Value = ProgressBar1.Maximum

End Sub


alguna idea ?

Gracias.

  #2 (permalink)  
Antiguo 21/05/2007, 05:04
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Re: ProgressBar y BackgroundWorker

Creo que hemos dado con el mismo problema tu y yo, solo q yo necesito saber como seria en C# xD

  #3 (permalink)  
Antiguo 15/10/2008, 15:53
Avatar de korssoo  
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ProgressBar y BackgroundWorker

Cita:
Iniciado por vecasita Ver Mensaje
Alguen ha tiene un ejemplo de como mostrar el progreso de mediante un ProgressBar mientras se espera el resultado de una consulta a una base de datos ?.
Lo que tengo es un llamado a un Procedimiento almacenado para llenar una grilla, pero con se demora, quisiera que se mostrara en un ProgressBar que la consulta se esta ejecutando..

Encontre el sgte codigo, pero no me funciona ya que me llena el progressbar cuando la consulta esta terminada y no lo va llenando mientras espera...

Public Sub InicioProceso()

_Contador = ProgressBar1.Minimum

Me.Cursor = Cursors.WaitCursor

BackgroundWorker1.WorkerSupportsCancellation = True

BackgroundWorker1.WorkerReportsProgress = True

BackgroundWorker1.RunWorkerAsync()

End Sub

Public Sub FinProceso()

BackgroundWorker1.CancelAsync()

End Sub

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
While Not BackgroundWorker1.CancellationPending

If Not BackgroundWorker1.CancellationPending Then

If _Contador = ProgressBar1.Maximum Then _Contador = ProgressBar1.Minimum Else _Contador += 1

Threading.Thread.Sleep(10)

BackgroundWorker1.ReportProgress(_Contador, "Guardando...")

Else

e.Cancel = True

Exit While

End If

End While
End Sub

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If Not (e.Error Is Nothing) Then

' There was an error during the operation.

Dim msg As String = String.Format("Error: {0}", e.Error.Message)

MessageBox.Show(msg)

Else

' The operation completed normally.

ProgressBar1.Value = ProgressBar1.Minimum


End If

Me.Cursor = Cursors.Default

ProgressBar1.Value = ProgressBar1.Maximum

End Sub


alguna idea ?

Gracias.

mmm. bueno. Creo q para q puedas hacer eso necesitas saber cuanto se va a tardar la query o ponerle un tiempo de espera con timeout o algo asi, de esa manera podrias cuantificar y darle valores a tu progress bar.
  #4 (permalink)  
Antiguo 15/10/2008, 16:07
 
Fecha de Ingreso: septiembre-2008
Mensajes: 68
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ProgressBar y BackgroundWorker

Saludos

Para realizar conversiones de de c# a vb.net o viceversa. Cheka esto

http://www.developerfusion.com/tools/convert/csharp-to-vb/

ATTE RealTMegalix
  #5 (permalink)  
Antiguo 16/10/2008, 05:53
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: ProgressBar y BackgroundWorker

Hola.
El BarckgroundWorker tiene un par de metodos que te permiten decir que hacer, uno de ellos es el DoWork donde metes el código que queres que quede funcionando por "atras".
Luego para ejectuarlo usas "BackgroundWorker1.RunWorkerAsync()", fijate en este ejemplo:

http://geeks.ms/blogs/eecsaky/archiv...undWorker.aspx
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
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 01:48.