Mam pracownika tła pracującego z długim zadaniem bazy danych. Chcę wyświetlać pasek postępu podczas wykonywania zadania. W jakiś sposób pracownik działający w tle nie będzie informował o postępie zadania.Backgroundworker nie będzie raportował postępu
To jest to, co mam:
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;
}
Robię to w WPF, ale myślę, że nie będzie różnicy.
góry dzięki
Jeśli wciskasz kod o cztery spacje podczas pisania (edytowania) pytania, będzie on wyświetlany z wcięciem i formatowaniem, jak kod, a nie wyciskany w akapicie i trudny do odczytania. –
Wygląda na to, że nie wywołujesz metody .ReportProgress w BackgroundWorker - czy po prostu pokazuje nam się uproszczony kod? – Mike
@Mike, myślę, że to raczej powód niż edycja edytora. –