cs_Pingouin57
Messages postés67Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention16 décembre 2007
-
9 sept. 2007 à 18:58
cs_Pingouin57
Messages postés67Date d'inscriptionsamedi 8 mai 2004StatutMembreDernière intervention16 décembre 2007
-
10 sept. 2007 à 19:12
Salut à tous,
Voici mon petit problème. Je développe actuellement un petit logiciel en delphi dans lequel j'inclus une boucle se répétant beaucoup de fois (l'execution peut durer quelques minutes), j'utilise la commande Refesh() et Redraw() dans la boucle pour actualiser l'affichage de la fenêtre (j'en ai d'ailleurs profité pour y mettre une progressbar qui indique l'avancement du bordel).
Aucun soucis jusque là, cependant, lorsque notre petit while commence à tourner, on peut constater que l'execution est de plus en plus lente (les calculs effectués dans chaque boucle sont généralement les mêmes à quelques choses près), de plus, si le refresh fonctionne au début, au bout de quelques secondes si on a le malheur de cliquer quelque part dans le programme celui-ci ne répond plus et continue à tourner. Il faut attendre la fin de la boucle pour que le programme réponde à nouveau. Grrr...
Je ne sais pas si il existe des techniques permettant d'éviter ce genre d'ennuis, que j'ai déja rencontré plusieurs fois auparavent sans parvenir à trouver de solution...
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 9 sept. 2007 à 19:24
Salut !
Il y a un seul remède: le thread.
Mais ça rentre dans un autre domaine de prog', assez compliquà à mettre en oeuvre et à comprendre pour la première fois.
En tapant "thread" dnas le moteur de recherche, tu devrais trouver quelques pistes.
Et si tu as d'autres problèmes, n'hésites pas.
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 10 sept. 2007 à 18:35
Eh eh f0xi: le remplaçant des "grandes" boucles qui prennent trop de temps, c'est bien sur les threads !!!
ProcessMessages, ça va deux minutes. Mais c'est 15 fois moins souple et ça bouffe les ressources processeur pour rien (donc ça ralentit). Et puis, c'est plus compliqué qu'un thread bien mené.
Et en plus, ça résout pas 100% des problèmes qu'on pourrait avoir.