Bonjour à toutes et à tous,
J'ai une nouvelle problématique de Novice en C# :
je souhaite afficher une barre de progression pendant un appel de web service mais je ne doit pas faire cela comme il faut car ma barre de progression change d'état uniquement à la fin de mon traitement (après un message que j'affiche à l'écran pour dire que la chaîne de connexion est créée).
je ne veut pas m'amuser à calculer exactement la durée de traitement et faire évoluer la barre en proportion avec le temps de traitement mais juste afficher la barre de progression avec le style Marquee pour donner un aspect de loader. En fait ma progressBar ne réagit que lorsque le traitement est fini alors que le but est que le loader prenne le relais pendant le traitement de l'appel du web service.
Voici mon code :D'avance merci pour vos conseils.
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 if (checkBox3.Checked == true) { progressBar4.Visible = true; progressBar4.Style = ProgressBarStyle.Marquee; progressBar4.MarqueeAnimationSpeed = 100; try { /* // < !--Appel de Web service --> . ..traitement pour appeler un web service ...qui construit chaîne de connexion ....dans une application .NET ...... */ progressBar4.Style = ProgressBarStyle.Blocks; progressBar4.Value = 100; MessageBox.Show("La chaîne de connexion a été créée avec succès !"); } catch (Exception exp) { MessageBox.Show(exp.ToString()); } }
Je viens d'effectuer quelques recherches complémentaires et j'ai trouvé le code suivant mais en VB : je pense que cela correspond à ce que vous m'avez expliqué.
Merci de m'indiquer si je m'oriente vers la bonne solution :
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 Private mThread As Thread Public Sub DemarrerTraitement(tache As action) mThread = New Thread(New ThreadStart(Sub() Me.Invoke(Sub(ctrl As Form1) DebutTraitement(ctrl), New Object() {Me}) tache.Invoke() Me.Invoke(Sub(ctrl As Form1) FinTraitement(ctrl), New Object() {Me}) End Sub )) mThread.Start() End Sub Private Sub DebutTraitement(window As Form1) window.Barre(True) End Sub Private Sub FinTraitement(window As Form1) window.Barre(False) End Sub
Partager