Afficher progressbar

Résolu
cs_Fabrice01 Messages postés 5 Date d'inscription mercredi 14 janvier 2004 Statut Membre Dernière intervention 28 février 2012 - 22 févr. 2012 à 16:33
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

6 réponses

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
Ok ça marche avec le Backgroundworker. Je mets à jour avec le backgroundworker.ReportProgress().
Merci


fab
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
22 févr. 2012 à 16:42
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
Whismeril Messages postés 19087 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 12 juillet 2024 658
22 févr. 2012 à 16:47
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
cs_Fabrice01 Messages postés 5 Date d'inscription mercredi 14 janvier 2004 Statut Membre Dernière intervention 28 février 2012
22 févr. 2012 à 17:24
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Fabrice01 Messages postés 5 Date d'inscription mercredi 14 janvier 2004 Statut Membre Dernière intervention 28 février 2012
24 févr. 2012 à 08:59
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
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
28 févr. 2012 à 16:40
Bonjour,
Avec Backgroundworker tu peux gèrer la progression, va voir à cette adresse :
http://glarde.developpez.com/dotnet/bgworker/cs/#LIII.3



louis
Rejoignez-nous