-
fonction Synchronize
Bonjour,
Lorsque mon application est en fonctionnement, l'UC tourne � 50% sur un PC fixe et 100 % sur un protable. J'ai d'abord pens� � un probl�me de Timer qui se lance tout le temps. Mais m�me sans les Timers, je retrouve ce probl�me.
J'ai tour� le probl�me, il �tait d�e � un thread permettant l'affichage qui tournait en permanence. J'ai d�cid� d'utiliser la m�thode Synchronize, mais lorsque je la d�clare, je ne la trouve nulle part.
Donc j'ai une erreur fonction undeclared et lorsque j'effectue une recherche sur mon PC, je ne la trouve pas. J'ai CheckSynchronize, mais pas de synchronize.
Je continue mes recherches, cependant si quelqun � d�j� �t� confront� � ce probl�me, je suis curieux de savoir comment il l'a r�solu.
Merci d'avance
Voici le liens vers la m�thode expliqu�e
http://chgi.developpez.com/thread/
-
J'ai r�ussi � trouver mon erreur, mais je n'arrive pas au r�sultats voulu.
Dans une boucle for, je charge un TChart, mais aussi j'affiche sa progression dans une progress bar et je donne sont pourcentage dans un item d'une status bar.
Le hic est que la boucle for ne permet pas l'affichage, l'OS �tant bloqu� le temps de la boucle. Seul ma progress bar �volu. J'ai donc plac� un Application->ProcessMessage() pour rendre la main et permettre l'affichage, mais l'affichage du TChart ralenti consid�rablement la boucle.
J'ai donc d�cid� de cr�� un thread sp�cifique � l'affichage du pourcentage, et de le mettre � jour via la m�thode synchronize. Je voit bien en mode pas � pas que la valeur �volue, et qu'elle est bien inscrite mais elle ne s'affiche pas.
J'ai donc d�cid� de changer la priorit� du thread, mais rien n'y fait.
S'il quelqun sait pourquoi, ou encore voit une id�e pour rem�dier � ce probl�me d'affichage, je suis � son �coute.
Merci d'avance
-
J'ai finalement affich� mon pourcentage gr�ce au Canvas, qui est apparemment prioritaire en affichage. Donc dans ma boucle for j'ai une mise � jour de mon affichage par le Canvas et celle ci s'affiche nikel !
-
Bonjour,
j'avai aussi eu un probleme avec les threads... et j'ai fait autrement...
le mystere reste donc :P
PS: je l'ai pas dis avant car j'en voyai pas l'utilit� ... la non plus tu me dira :lol:
lanonyme
-
Bonjour,
j'ai programm� y a quleques ann�es un moteur de jeu d'�chec.
Le programme est capable de r�soudre des probl�mes de mat.
Il est con�u pour bouffer toutes les ressources CPU disponibles:
je n'y ai pas mis de ProcessMessage dans les boucles critiques.
Eh oui, vitesse = performance pour une recherche de combinaisons �chiqu�ennes.
A ma grande surprise, depuis que j'ai une nouvelle b�cane avec la nouvelle gestion de la RAM, mon application ne consomme plus que 50% du CPU.
Je pense que c'est d� � l'astuce du 'Front bus' de la RAM annonc� � 800MHz, alors que les barettes de RAM tournent � 400MHz. Simplement le syst�me permet d'acc�der � 2 adresses m�moire sur un m�me front de bus. Donc 2 barettes � 400MHz �quivaut � 1 barette tournant � 800MHz.
Et voila, sauf que mon appli compil� y a longtemp avec un VC++ du d�but, g�re probablement mal le syst�me Hyper Threading.
J'en viens au sujet de la discussion, l'application peut utiliser 100% de CPU sur un type de machine, et seulement la moiti� sur un syst�me Hyper Threading.
J'esp�re que je ne suis pas hors sujet :D
@+
-
Mon probl�me �tait que je voulais afficher l'�tat de cette boucle, vu qu'elle est longue et ainsi �vit� � l'utilisateur de penser qu'elle est "plant�", mais cette affichage ne se faisait qu'une fois la boucle termin�e sauf pour la progression d'une ProgressBar. Je passait pas la mise de texte dans une StatusBar.
Chose �trange pour moi de voir la mise � jour de la ProgressBar dans ma boucle, mais pas d'un texte !!! Finalement, j'ai remarqu� que la modification du Canvas avait la m�me priorit� que la ProgressBar.
J'ai donc affich� mon Texte par le Canvas avec TextOut et miracle, je vois mon texte se mettre � jour pendant la boucle. Je n'ai donc pas de perte de performance, vu que je n'ai plus de ProcessMessage par contre, il est vrai que cette boucle demande donc de la ressource.
50% sur un PC fixe et 100% sur un portable. Ceci est surment du au ph�nom�ne que tu as expliqu�.