Fenetre figee si on la deplace [Résolu]

wardavb 25 Messages postés samedi 4 juin 2005Date d'inscription 12 août 2008 Dernière intervention - 14 sept. 2006 à 11:59 - Dernière réponse : wardavb 25 Messages postés samedi 4 juin 2005Date d'inscription 12 août 2008 Dernière intervention
- 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 ;)
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 sept. 2006 à 13:14
3
Merci
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 #

Merci cs_casy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_casy
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 14 sept. 2006 à 12:07
0
Merci
Quelques DoEvents bien placés dans ta boucle de lecture du fichier.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
wardavb 25 Messages postés samedi 4 juin 2005Date d'inscription 12 août 2008 Dernière intervention - 14 sept. 2006 à 12:26
0
Merci
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 ;)
Commenter la réponse de wardavb
wardavb 25 Messages postés samedi 4 juin 2005Date d'inscription 12 août 2008 Dernière intervention - 14 sept. 2006 à 13:33
0
Merci
grand merci a toi :)
glop glop ;)
Commenter la réponse de wardavb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.