krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 27 juil. 2009 à 11:46
Salut.
Thread.Sleep endort le thread. C'est donc une opération plus ou moins bloquante. Elle l'est aussi pour le rafraichissement de ta fenêtre.
Tu peux utiliser un Timer, ça devrait marcher. Tu auras également besoin d'utiliser un Dispatcher pour accéder à ta progressbar depuis le thread créé par le timer.
L'autre solution, qui devrait également marcher (mais je ne garantis rien là encore), est d'utiliser un DoEvents avant de faire ton thread.sleep :
Cependant, la méthode DoEvents() n'existe pas directement en WPF. Tu peux donc regarder ici. En gros, le but de cette méthode est d'attendre le traitement de toutes les tâches graphiques.
Krimog : while (!(succeed = try())) ; - NON, "LE BAR" n'est PAS un langage de programmation ! -
Lors du click sur le bouton OK, je mets à jour l'interface graphique en appelant la méthode updatgeGUI(false) afin de faire patienter l'utilisateur (apparition d'une progressBar, etc)
J'appelle ensuite la méthode checkInfo() qui est une méthode dont je ne connais pas la durée. Dans mon premier post, Thread.Sleep n'est là que pour simuler le fait que je réalise un traitement dont je ne connais pas la durée.
Une fois ce traitement réalisé, je modifie à nouveau l'interface graphique en appelant updatgeGUI(true).
Je pensais utiliser un delegate, afin d'appeler la méthode checkInfo() de manière asynchrone, avec une méthode de CallBack qui appelerait updatgeGUI(true).
Cela marche, sauf que le thread créé par le delegate n'a pas accès aux éléments de ma fenêtre.
J'ai commencé à me renseigné sur les Dispatcher que je ne connaissais pas. Par contre, je ne vois pas encore comment l'utiliser dans mon cas.