Fenetre figee si on la deplace

Résolu
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008 - 14 sept. 2006 à 11:59
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008 - 14 sept. 2006 à 13:33
bonjour a tous
 j'ai cree une form1 toute simple avec un bouton et un label

le bouton lance un sub ,qui ouvre un fichier texte et compte les lignes de mon fichier (4 millions de lignes) (+ de 30 mn )
- a chaque ligne ,le sub met a jour le label comptant les lignes lues
     label1.text=no
     label1.update
Cependant ,des que je touche a la fenetre pour la deplacer ,l'affichage s'arrete ,alors que le
programe lui continue apparement de fonctioner 
 
     j'ai des fois un message form 1 ne repond pas sur le haut de ma form
     j'ai essayé de rajouter me.update et me.refrech mais rien a faire

cela se produit aussi si je clique sur une autre fenetre windows ,ou avec  l'economiseur ecran

comment faire pour conserver ma fenetre ? ,la reduire la deplacer  et avoir l'affichage de mon compteur a la demande ?

merci

.

glop glop ;)

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 sept. 2006 à 13:14
Le problème c'est que tu as surrement fait une boucle pour traiter ton fichier. Cette boucle prend ébormément de temps, vu le nombre de lignes à traiter. Ton application occupe donc tout son temps à travailler sur cette boucle, elle n'a plus la possibilité de recevoir et de répondre aux messages venant du système.

Pour prendre une image, c'est comme si tu étatis tellement prise à lire un livre passionnant, que tu ne verrais même pas la cambrioleur prendre ta tv devant toi.

Le but du DoEvents, est de rendre la main au système quelques instants (de temps en temps, tu releve les yeux de ton livre, pour regarder autour de toi). Ainsi ton application a le temps de recevoir et de répondre aux message venant de Windows. Evidement ça peu légèrement augmenter le temps de traitement.

Ci-dessous, l'explication du msdn :
Lorsque vous exécutez un Windows Form, il crée un formulaire qui attend
ensuite les événements à gérer. Chaque fois que le formulaire gère un événement,
il traite l'ensemble du code associé à cet événement. Tous les autres événements
attendent dans la file d'attente. Pendant que votre code gère l'événement, votre
application ne répond pas. Par exemple, la fenêtre ne se repeint pas si une
autre fenêtre est glissée par-dessus.

Si vous appelez DoEvents dans votre code, votre application peut alors
gérer les autres événements. Par exemple, si vous disposez d'un formulaire qui
ajoute des données à [T_System_Windows_Forms_ListBox.htm ListBox] et
DoEvents à votre code, alors votre formulaire se repeint lorsqu'une autre
fenêtre est glissée par-dessus. Si vous enlevez DoEvents de votre code,
votre formulaire ne se repeindra alors pas tant que le gestionnaire d'événements
Click du bouton n'aura pas terminé son exécution.

Cette méthode est généralement utilisée dans une boucle pour traiter les
messages.

pour l'utilisation, dans ta boucle faut mettre au moins une instruction Application.DoEvents(), par ex au début, à la fin, ou bien alors juste après ton Label1.Text=no par exemple.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 sept. 2006 à 12:07
Quelques DoEvents bien placés dans ta boucle de lecture du fichier.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
0
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008
14 sept. 2006 à 12:26
merci pour ta reponse ,j'en conclu donc que se probleme arrive a tous ?


on dirait que c windows qui attend une reponse et croit que ma fenetre est bloquee....


donc peut etre tout les x points faudrait faire quelque chose....


 je suis debutante aurait tu un petit exemple ? (doevent ?)
merci
glop glop ;)
0
wardavb Messages postés 25 Date d'inscription samedi 4 juin 2005 Statut Membre Dernière intervention 12 août 2008
14 sept. 2006 à 13:33
grand merci a toi :)
glop glop ;)
0
Rejoignez-nous