Afficher progressbar [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
-
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012
-
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

Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012

Ok ça marche avec le Backgroundworker. Je mets à jour avec le backgroundworker.ReportProgress().
Merci


fab
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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
Messages postés
14908
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 octobre 2020
446
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
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012

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
Messages postés
5
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
28 février 2012

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
Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,
Avec Backgroundworker tu peux gèrer la progression, va voir à cette adresse :
http://glarde.developpez.com/dotnet/bgworker/cs/#LIII.3



louis