Afficher progressbar [Résolu]

Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
- - Dernière réponse : cs_Fabrice01
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
- 28 févr. 2012 à 17:46
bonjour,
j'ai une appli qui lit un fichier, puis instancie des userControls suivant le resultat. Pendant ce temps je voudrais afficher une ProgressBar et bien sur afficher la progression.

        public void Lecture(string fileName)
        {
            ProgressCreate.Visibility = System.Windows.Visibility.Visible;

            LectureFichier(fileName);

            CreateControl();

            ProgressCreate.Visibility = System.Windows.Visibility.Hidden;
        }


la progressBar ne s'affiche jamais, j'ai l'impression qu'on attend la fin du traitement pour l'afficher, or à la fin je la passe en Hidden.
Comment puis-je faire ? Et comment dois-je la mettre à jour pendant la lecture du fichier et la création des userControls ?

fab
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
3
Merci
Ok ça marche avec le Backgroundworker. Je mets à jour avec le backgroundworker.ReportProgress().
Merci


fab

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Fabrice01
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
0
Merci
Salut,

je pense qu'il va falloir threader ta procedure pour que la barre de progression puisse avoir la main et s'afficher correctement (la classe Thread sur MSDN). Tu dois également pouvoir trouver des exemples/tuto sur ce site ;)

Bon dev
Commenter la réponse de cs_jopop
Messages postés
13600
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 août 2019
295
0
Merci
Bonjour,

en WinForm je te proposerais de faire un
Application.DoEvents();
toutes les x itérations.

Mais comme tu as posté dans une catégorie WPF, je ne sais pas si cela fonctionne.



Whismeril
Commenter la réponse de Whismeril
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
0
Merci
Effectivement, je pensais threader ma procedure. Mais elle consiste en l'instanciation de userControls. Et je ne sais si je peux le faire en dehors de l'UI thread

fab
Commenter la réponse de cs_Fabrice01
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
0
Merci
bon j'ai avancé. j'utilise un backgroundworker et dans l'evenement Do_Work je traite ma procedure. Lorsque je dois remettre à jour l'UI j'utilise le dispatcher comme ceci :

                Dispatcher.BeginInvoke((ThreadStart)delegate
                {
                    UserControlEssai userEssai = new UserControlEssai();

                    CanvasEssai.Children.Add(userEssai);

                }, null);


Par contre, comment faire pour passer des arguments ?

fab
Commenter la réponse de cs_Fabrice01
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
7
0
Merci
Bonjour,
Avec Backgroundworker tu peux gèrer la progression, va voir à cette adresse :
http://glarde.developpez.com/dotnet/bgworker/cs/#LIII.3



louis
Commenter la réponse de cs_louis14