Form qui devient blanc lors de l'exécution

Résolu
cs_ekke Messages postés 3 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2009 - 5 févr. 2009 à 10:35
cs_ekke Messages postés 3 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2009 - 5 févr. 2009 à 13:15
Bonjour,

Lorsque j'exécute mon programme, il y a un moment où il réalise un traiement utilisant des composants et SQL server assez lourds qui prennent presque toutes les ressources CPU.

Le problème, c'est que du coup, le Form devient blanc si on passe sa fenêtre en réduit ou en arrière plan et qu'on la remet en premier plan. Les contrôles ne se redessinent pas, et alors que du texte devrait apparaître dans une textbox du Form après chaque étape réalisée durant le traitement, rien n'apparaît.

Ce n'est qu'une fois que le traitement est terminé (les ressources CPU sont libérées) que le Form se redessine et qu'enfin le texte qui aurait du se compléter peu à peu durant le traitement apparaît au complet.

J'ai essayé le Me.refresh dans la boucle qui exécute ces traitements lourds mais ça ne fait rien. Y a-t-il un moyen pour que le Form reste actualisé et se dessine correctement ?

Merci d'avance :)

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 févr. 2009 à 12:48
Salut
En .Net, c'est Application.DoEvents
A insérer dans une éventuelle boucle (For-Next ou Do-Loop) ou deci-delà, dans ta partie gestion SQL.
La forme devient blanche car le programme ne rend pas la main au système pour gérer le graphisme.
Si le figeage a lieu lors de l'exécution d'une seule instruction, tu ne pourras rien faire, hélas.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
5 févr. 2009 à 11:30
Bonjour,

Essayes peut-être avec un do events (valable en vb6, je ne connais pas la correspondance en vb.net..)

L'expérience, c'est une connerie par jour, mais jamais la même..
0
cs_ekke Messages postés 3 Date d'inscription dimanche 25 avril 2004 Statut Membre Dernière intervention 5 février 2009
5 févr. 2009 à 13:15
Super, je vais tester ça :) Merci beaucoup !
0
Rejoignez-nous