ReportProgres avec un BackRoundWorker
Bonjour
J'ai du mal a bien comprendre comment correctement gerer le ReportProgress avec un BackRoundWorker
Dans mon cas, le BackRoundWorker fait appel a une methode statique d'une classe qui opere un telechargement
Dans cette classe j'ai un event (DownLoadStep) qui me donne tous les nK le volume Total a télécharger et le volume déja télécharger
Mais comment puis-je abonner le progressreport de mon backroundworker a cet event ?
Pour exemple j'ai abonné la methode Step de la form qui devrait mettre a jour un progressbar mais tel quel ca ne peut evidement pas marcher !
Voici en gros le code
Merci de votre aide ou suggestions
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| // **********************************************************************************************
private void btnDownLoad_Click(object sender, EventArgs e)
{
this.bgwWebDownload.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted);
this.bgwWebDownload.DoWork += new DoWorkEventHandler(bgw_DoWork);
this.bgwWebDownload.RunWorkerAsync();
return;
}
// **********************************************************************************************
void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
return;
}
Process.Start("c:/iii/www.exe");
Environment.Exit(7);
}
// **********************************************************************************************
void bgw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker me = (BackgroundWorker)sender;
if (me.CancellationPending)
{
e.Cancel = true;
return;
}
C_WebTools.DownLoadStep += this.step;
C_WebTools.DownloadFile("http://truc.be/app_1.0-setup.exe", "c:/iii/www.exe");
}
// **********************************************************************************************
void step(long Total, long Current)
{
if (prb1.Maximum == 0)
{
prb1.Maximum = (int)Total / 10;
}
prb1.Value = (int)Current / 10;
prb1.Refresh();
} |