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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();
    }