Bonjour,
voilà j'ai un traitement qui se fait à l'ouverture d'une fenêtre, et je souhaitais rajouter un petit affichage sur l'avancée du traitement.
Voici avant tout, la petite form que j'ai créé permettant d'afficher l'avancée d'un traitement :
A noter que, j’implémenterais un système de lock sur ma propriété Progression, mais j'aimerais qu'avant tout chose, ma barre de progression ... progresse ... x)
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 public partial class Ouverture : Form { private int _progression = 0; public int Progression { get { return _progression; } set { _progression = value; } } public Ouverture() { InitializeComponent(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { int ProgressionAffiche = 0; while (Progression < 100) { if (ProgressionAffiche != Progression) { backgroundWorker1.ReportProgress(Progression); System.Diagnostics.Debug.WriteLine("ReportProgress"); ProgressionAffiche = Progression; } System.Diagnostics.Debug.WriteLine("Sleep"); Thread.Sleep(300); } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value = e.ProgressPercentage; System.Diagnostics.Debug.WriteLine(" progressBar1Value -> "+progressBar1.Value); } private void Ouverture_Load(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); } }
Le résultat actuel, est que ma form de progression s'affiche bien, cependant l’évènement ProgressChanged semble ne s’exécuter qu'après que l'évènement DoWork soit complètement terminé (ce qui évidemment, empêche ma ProgressBar d'afficher la progression , comme le montre l'output de la console de Debug :
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 private void Load_Groupe() { Form_Messages.Ouverture ouv = new CAC.Form_Messages.Ouverture(); ouv.Show(); Decimal total = Decimal.Parse(GroupeAModifier.Groupes_Prestations_Tiers.Count.ToString()); Decimal pro = 0; //ma boucle avec le traitement foreach (Groupes_Prestations_Tier tier in GroupeAModifier.Groupes_Prestations_Tiers.OrderBy(ti => ti.Tier.NumClient)) { //Traitement en lui même, qui n' a pas d'importance dans ce cas de figure) Decimal dec = ((Decimal)pro / total) * 100; ouv.Progression = (int)dec; System.Diagnostics.Debug.WriteLine("Progression : " + (int)dec); pro++; } } ouv.Close(); }
je tiens à signaler, que l'attachement de mes events sont fait correctement et que la propriété WorkerReportsProgress de mon BackGroundWorker est bien mis à True.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164 Sleep Sleep Progression : 0 Progression : 1 Progression : 2 ReportProgress Sleep Progression : 3 Progression : 5 Progression : 6 ReportProgress Sleep Progression : 7 Progression : 8 Progression : 10 ReportProgress Sleep Progression : 11 Progression : 12 ReportProgress Sleep Progression : 13 Progression : 15 Progression : 16 ReportProgress Sleep Progression : 17 Progression : 18 Progression : 20 ReportProgress Sleep Progression : 21 Progression : 22 Progression : 23 ReportProgress Sleep Progression : 25 Progression : 26 Progression : 27 ReportProgress Sleep Progression : 28 Progression : 30 Progression : 31 ReportProgress Sleep Progression : 32 Progression : 33 Progression : 35 ReportProgress Sleep Progression : 36 Progression : 37 Progression : 38 ReportProgress Sleep Progression : 40 Progression : 41 Progression : 42 ReportProgress Sleep Progression : 43 Progression : 45 Progression : 46 ReportProgress Sleep Progression : 47 Progression : 48 ReportProgress Sleep Progression : 50 Progression : 51 Progression : 52 ReportProgress Sleep Progression : 53 Progression : 55 Progression : 56 ReportProgress Sleep Progression : 57 Progression : 58 Progression : 60 ReportProgress Sleep Progression : 61 Progression : 62 ReportProgress Sleep Progression : 63 Progression : 65 Progression : 66 ReportProgress Sleep Progression : 67 Progression : 68 Progression : 70 ReportProgress Sleep Progression : 71 Progression : 72 Progression : 73 ReportProgress Sleep Progression : 75 Progression : 76 Progression : 77 ReportProgress Sleep Progression : 78 Progression : 80 Progression : 81 ReportProgress Sleep Progression : 82 Progression : 83 Progression : 85 ReportProgress Sleep Progression : 86 Progression : 87 Progression : 88 ReportProgress Sleep Progression : 90 Progression : 91 Progression : 92 ReportProgress Sleep Progression : 93 Progression : 95 Progression : 96 ReportProgress Sleep Progression : 97 Progression : 98 progressBar1Value -> 2 progressBar1Value -> 6 progressBar1Value -> 10 progressBar1Value -> 12 progressBar1Value -> 16 progressBar1Value -> 20 progressBar1Value -> 23 progressBar1Value -> 27 progressBar1Value -> 31 progressBar1Value -> 35 progressBar1Value -> 38 progressBar1Value -> 42 progressBar1Value -> 46 progressBar1Value -> 48 progressBar1Value -> 52 progressBar1Value -> 56 progressBar1Value -> 60 progressBar1Value -> 62 progressBar1Value -> 66 progressBar1Value -> 70 progressBar1Value -> 73 progressBar1Value -> 77 progressBar1Value -> 81 progressBar1Value -> 85 progressBar1Value -> 88 progressBar1Value -> 92 progressBar1Value -> 96
Avez vous une idée de l'origine du problème ?
Merci d'avance !
Partager