Bonjour,
J'ai un BackgroundWorker qui effectue les traitements mais pour une raison inconnue, je bouton annuler ne marche pas. J'ai pourtant bien suivi la procédure de l'article sur le site mais je ne comprends toujours pas.
Les Enabled des boutons marche quand je click sur le bouton cancel mais le traitement dans doWork ne s'arrête pas...
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
45
46
47
48
49
50
51
52
53
54 private void btnExport_Click(object sender, EventArgs e) { this.btnExport.Enabled = false; this.btnCancel.Enabled = true; lblResult.Text = "Running..."; bgwDesign.RunWorkerAsync(); } private void bgwDesign_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; //traitement //------------- // if (worker.CancellationPending) { e.Cancel = true; } private void bgwDesign_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { lblResult.Text = "An error has been occured : " + e.Error.Message; } else if (e.Cancelled) { lblResult.Text = "Export cancelled"; } else { lblResult.Text = String.Empty; } this.btnExport.Enabled = true; this.btnCancel.Enabled = false; pgbState.Value = 0; } private void btnCancel_Click(object sender, EventArgs e) { bgwDesign.WorkerSupportsCancellation = true; bgwDesign.CancelAsync(); pgbState.Value = 0; this.btnCancel.Enabled = false; this.btnExport.Enabled = true; }
Merci.
Partager