J'ai un arrière-plan qui exécute une longue tâche de base de données. Je veux montrer la barre de progression pendant que la tâche est en cours. D'une manière ou d'une autre, l'arrière-plan ne rapportera pas la progression de la tâche.L'arrière-plan ne signale pas la progression
C'est ce que j'ai:
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;
}
Je fais cela en WPF, mais je suppose que cela ne fera pas une différence.
Merci à l'avance
Si vous indentez votre code de quatre espaces lorsque vous saisissez (ou modifiez) votre question, il sera affiché avec indentation et mise en forme comme du code, plutôt que d'être mélangé dans un paragraphe et difficile à lire. –
Vous ne semblez pas appeler la méthode .ReportProgress de BackgroundWorker - est-ce simplement parce que vous nous montrez du code simplifié? – Mike
@Mike, je pense que c'est probablement la raison plutôt que l'édition d'un exemple. –