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(); }
Partager