Grosse application : faire tourner une progressBar
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 2008
-
31 août 2006 à 18:53
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDerniè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
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 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).
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 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 :
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.
iow4
Messages postés302Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention 2 novembre 20084 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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 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