Conseil pour faire diminuer le temps processeur

acheng Messages postés 6 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 2 décembre 2005 - 13 août 2004 à 14:22
MoiOlivier Messages postés 172 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 4 août 2005 - 13 août 2004 à 18:27
Je suis en train de faire un programme qui a pour fonction de scanner un grand nombre de répertoires. En gros, lorsque le répertoire contient plus de 5 fichiers, une action sera déclenchée (exemple envoyer un email).
J'ai donc fait une boucle de type :

Quitter=false
Do while Quitter= false
Lecture du répertoire
If nb fichier >5 then
Envoi email
end if
Doevents
Loop

Lorsque je lance le programme, j'ai le processeur qui monte à 98% !!!
Mais je suis persuadé que la valeur est fausse puisque j'arrive à faire d'autres opérations sur le poste normalement.
J'ai essayé d'introduire une pause de X secondes entre chaque lecture de répertoire mais c'est pareil.
Auriez vous une explication et des conseilles pour faire ce traitement ?
Je pense que c'est à cause de la boucle mais sans l'utiliser comment je vais pourvoir m'en sortir ???

4 réponses

ShadowWisp Messages postés 113 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 25 août 2004 1
13 août 2004 à 14:28
Il te manque un quitter=true, que tu dois faire si tu trouves plus de 5 fichier dans un repertoire si j'ai bien compris?

Comme c'est la, ta boucle n'a pas de condition d'arret

A.
0
acheng Messages postés 6 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 2 décembre 2005
13 août 2004 à 14:42
Il y a bien un bouton "Quitter" qui met la variable Quitter à True. C'est pour ça que j'ai utilisé la fonction Doevents.
0
daivil Messages postés 87 Date d'inscription mardi 25 juin 2002 Statut Membre Dernière intervention 4 juin 2005
13 août 2004 à 15:22
Ce n'est pas parce que tu arrives a faire autre chose a coté que ton processeur n'est pas a fond la caisse...

-- Devil --
0
MoiOlivier Messages postés 172 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 4 août 2005
13 août 2004 à 18:27
Salut,
A ta place, je créerais un contrôle Timer avec un intervale de 50 par exemple, et je placerais le code de la boucle dans l'évenement Timer. Comme ça, ton CPU ne devrait pas monter au-delà de 50% et ya plus besoin du DoEvents.

Et lorpsque tu appuyes sur Quitter, tu met la propriété Enabmed du Timer à False.

Bonne prog, @+
0
Rejoignez-nous