FLO1978
Messages postés18Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention 1 août 2006
-
24 janv. 2004 à 12:07
cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006
-
24 févr. 2006 à 00:46
Bonjour,
Je cherche a rendre la main ausysteme lors de l'execution d'un code FSO, le programme passe en "pas de réponse" mais travail toujours ...
j'avais pensez à " Me.refresh " mais cela ne change pas grand chose
Merci de votre aide
A voir également:
Le programme ne contient pas de méthode 'main' statique adaptée à un point d'entrée
cs_MFN
Messages postés6Date d'inscriptiondimanche 4 janvier 2004StatutMembreDernière intervention29 septembre 2006 24 févr. 2006 à 00:46
En VB6 la procédure DoEvents() était globale et permettait au système le contrôle et donc empêcher l'application de se bloquer elle-même. Elle est toujours présente mais est désormais une procédure publique de l'objet Application.
En clair il suffit d'écrire :
Call Application.DoEvents()
D'une utilité sans égale pour les traitements en boucle comme les For-Next ou autres Do-Loop.
Attention cependant lorsque vous utilisez cette méthode dans une application événementielle car elle n'interrompt pas l'exécution de l'application, juste la procédure en cours. Il est donc possible qu'un autre événement soit traité avant que celui qui a été interrompu se poursuive.
Exemple :
Vous avez une feuille avec un bouton qui lance un traitement récurent assez long grâce à une boucle. Pour éviter le blocage de l'application vous mettez un DoEvents dans votre boucle. Il est tout à fait possible de recliquer sur ce même bouton et donc de lancer une deuxième fois le traitement, alors que le premier n'est pas terminé. Les deux traitements (identiques) vont donc s'exécuter en parallèle.
Malheureusement je n'ai pas encore trouvé d'alternative satisfaisante pour ce cas de figure...
Au mieux on peut désactiver le bouton (Enabled=False) au début et le réactiver à la fin (Enabled=True), un truc du genre.