Tengo un trabajador en segundo plano que ejecuta una tarea de base de datos larga. Quiero mostrar la barra de progreso mientras la tarea se está ejecutando. De alguna manera, el trabajador de segundo plano no informará el progreso de la tarea.Backgroundworker no informará el progreso
Esto es lo que tengo:
BackgroundWorker _bgwLoadClients;
_bgwLoadClients = new BackgroundWorker();
_bgwLoadClients.WorkerReportsProgress = true;
_bgwLoadClients.DoWork += new DoWorkEventHandler(_bgwLoadClients_DoWork);
_bgwLoadClients.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_bgwLoadClients_RunWorkerCompleted);
_bgwLoadClients.ProgressChanged += new ProgressChangedEventHandler(_bgwLoadClients_ProgressChanged);
_bgwLoadClients.RunWorkerAsync(parms);
private void _bgwLoadClients_DoWork(object sender, DoWorkEventArgs e)
{
DataTable dt = getdate();
e.Result = dt;
}
void _bgwLoadClients_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
estoy haciendo esto en WPF, pero supongo que no hará una diferencia.
Gracias de antemano
Si sangra su código en cuatro espacios cuando está escribiendo (o editando) su pregunta, se mostrará con sangría y formateándose como código, en lugar de mezclarse en un párrafo y es difícil de leer. –
Parece que no está llamando al método .ReportProgress del BackgroundWorker, ¿es simplemente porque nos está mostrando un código simplificado? – Mike
@Mike, creo que esa es probablemente la razón más que la edición excesiva de un ejemplo. –