Grosse application : faire tourner une progressBar

iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 31 août 2006 à 18:53
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 - 31 août 2006 à 20:28
Bonjour,
J'ai un programme, dans ce programme je dois effectuer une operation qui met beaucoup de temp ( minimum 40s ) quand cet operation est lancé le programme se bloque comment faire pour faire tourner une progressBar pour montrer à l'utilisateur que le programme ne plante pas

Merci d'avance de votre  aide

6 réponses

bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
31 août 2006 à 19:36
est ce que ton opération tourne dans un Thread différent que celui de l'application (si non tu peux deja commencer par ca pour ne pas bloquer le programme).
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 août 2006 à 20:01
Salut,

En effet, il faut lancer ton traitement dans un autre Thread (ce que tu ne dois surement pas faire).
Utilise un Thread du pool de Thread de cette facon :

<hr />ThreadPool.QueueUserWorkItem(newWaitCallback(LaMethodeDeTonThread));
<hr />

Ou alors crée un nouveau Thread.

Pour faire avancer la ProgressBar, Il faut utiliser une delegation asynchrone, cf ce tutorial 
Tu te crées une petite méthode qui incremente ta ProgressBar, un délégué qui a la même signature, et tu appeles cette méthode via BeginInvoke, comme indiqué dans le tuto.

Mx
MVP C# 
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 août 2006 à 20:16
Et tant que j'y suis, je ne peux que te conseiller de lire ceci sur le blog de coq

Mx
MVP C# 
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
31 août 2006 à 20:17
Merci
Pour l'avancement de la progressBar c'est ok
Mais la "grosse operation" s'effectue dans la methode de l'evenement d'un button ma methode s'appelle private

void button1_Click(
object sender,
EventArgs e)

MorpionMx -> je dois mettre ou ton code ?
0

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

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 août 2006 à 20:25
Tu te crées une méthode

public void LaMethodeDeTonThread(object state)
{
   // ...
}

dans laquelle tu mets toute ton operation. (enfin, renomme cette méthode, bien sur)
Dans la méthode de ton evenement click, tu la ligne dans mon post plus haut.

Et si tu veux instancier ton propre thread

Thread t = new Thread(new ThreadStart(LaMethodeDeTonThread));
t.Start();

Et tu supprimes le parametre dans la signature (object state) de LaMethodeDeTonThread

Mx
MVP C# 
0
iow4 Messages postés 302 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 2 novembre 2008 4
31 août 2006 à 20:28
j'essaie merci je vous tient au courant
0
Rejoignez-nous