Ho un lavoratore in background che esegue un'attività di database lungo. Voglio mostrare la barra di avanzamento mentre l'attività è in esecuzione. In qualche modo il lavoratore in background non segnalerà l'avanzamento dell'attività.Backgroundworker non segnalerà i progressi
Questo è quello che ho:
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;
}
sto facendo questo in WPF, ma credo che non farà la differenza.
Grazie in anticipo
Se rientri il tuo codice di quattro spazi quando stai scrivendo (o modificando) la tua domanda, questa verrà visualizzata con rientro e formattazione come il codice, piuttosto che schiacciata insieme in un paragrafo e difficile da leggere. –
Sembra che tu non stia chiamando il metodo .ReportProgress di BackgroundWorker - è semplicemente perché ci stai mostrando un codice semplificato? – Mike
@ Mike, penso che sia probabilmente la ragione piuttosto che la modifica di un esempio. –