Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Où gérer l'affichage dans une application classique ? [ Système / Exécution ] (cedricbi)

dimanche 3 août 2008 à 14:21:03 | Où gérer l'affichage dans une application classique ?

cedricbi

Bonjour à tous,

Petite question pratique :
Dans un programme "bien codé", où doit (ou est générallement) géré l'affichage ? Dans un thread à part ou dans le thread principal (dans un timer, dans un évènement, dans une boucle infinie) ?

Par exemple, pour un programme qui affichage les cartes de Google Map, j'ai le thread principal qui ne fait... rien à part recevoir les évènements souris et les changements de paramètres, un thread d'affichage qui affiche les cartes voulues et un thread de téléchargement qui télécharge les cartes qui ne sont pas encore dans le cache. Cette solution marche mais j'ai des doutes quant au fait de mettre l'affichage dans un thread à part du thread principal.


Le plus dur dans un programme c'est de savoir pourquoi il marche !


dimanche 3 août 2008 à 15:15:45 | Re : Où gérer l'affichage dans une application classique ?

florenth

Membre Club
Réponse acceptée !
Salut !

Normalement, la logique voudrait que toute la partie interaction avec l'utilisateur (clics clavier) et affichage (maj des édits/labels/statusbar, paint des paintbox, ...) se trouve dans le thread principal, mais pas de boucle infinie, Windows a déjà son système de messages et compagnie.

Et que toute la partie "traitement" (calcul, récupération de fichier via Internet, ...) se trouve dans un ou plusieurs threads séparés, qui se synchronisent régulièrement avec le thread principal pour signaler une mise à jour de l'affichage.

Bon, après, y'a des variantes, mais l'idée est là.
Dans ton cas, je ne vois pas comment ton thread séparé peut afficher les cartes voulues, logiquement seul le principal doit accéder à l'affichage (risque de corruption de la VCL sinon). Mais sinon, le reste est tout bon !

A+
Florent




Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net

dimanche 3 août 2008 à 16:40:33 | Re : Où gérer l'affichage dans une application classique ?

cedricbi

Salut,

Dans le thread principal, évidement.. ! C'est ce que je pensais.
Mais maintenant, où dans le thread principal ? Sur quel évènement ?

Merci

lundi 4 août 2008 à 15:30:31 | Re : Où gérer l'affichage dans une application classique ?

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

l'utilisation de thread dans une application est totalement facultatif, et doit être réservé a des choses bien spécifiques.

alors oui, comment determiner ou non, l'utilisation possible des threads ?

- quand l'application nécessite 2 temps distinct d'exécution, quand des données sont externes au programme, quand une action doit être indépendante etc. :
c'est le cas des logiciels de retouche d'image
c'est le cas des logiciels de montage video
c'est le cas des logiciels de composition audio
c'est le cas des logiciels p²p ou de telechargement

l'affichage et les interactions sont généralement dans le thread principal.
des threads secondaire peuvent etre créer pour la mise a jours d'element visuel (liste de donnée, image, flux etc)

par defaut, le thread principal est prioritaire sur les autres thread de l'application (sauf priorité ajustée).
par exemple, l'attente d'un Flux (audio, video, donnée brute), un calcul complexe, un telechargement peuvent etre threadés afin de ne pas freezer l'application ou le systeme.

cela permet par exemple d'ajuster la priorité du thread selon la charge CPU.
aucune action sur le systeme depuis X secondes -> priorité real time / haute
attention on touche a la souris ou au clavier -> priorité normale / basse
attention un autre programme comsome des ressources -> priorité normale / basse

c'est pour cela par exemple qu'une application bien codée (surtout sur les thread) ne freeze jamais ou rarement le systeme.

pour savoir dans quel evenement on doit gerer l'affichage, tout depend de l'affichage!

interface de composant standard (GDI, GDI+, OpenGL, DX) -> géré par l'appli et le systeme
interface personalisée sur un canvas (GDI, GDI+, OpenGL, DX) -> géré par un timer avec un RRt de 12 a 30 FPS (80 a 40ms) ou timer dédié a ce genre d'affichage. mais cela est facultatif puisqu'on peu gerer l'affichage dans la procedure Paint d'un TWinControl ou TGraphicControl etc.




lundi 4 août 2008 à 16:21:22 | Re : Où gérer l'affichage dans une application classique ?

cedricbi

Bonjour,

Merci pour toutes ces précisions foxi !



Cette discussion est classé dans : programme, affichage, thread, principal, part


Répondre à ce message

Sujets en rapport avec ce message

threads [ par sisi231 ] SISI231Je me suis mis aux threads y'a 2 jours : j'ai un peu compris , j'ai corrigé une erreur grace à synchronize mais il en reste une : (petite expli PROBLEME avec les progressbar et les thread [ par rome ] salut, j'ai un pb sous delphi6. ACCROCHEZ VOUS Je veux executer dans mon programme, lorsque j'appuie sur 1 bouton une progressbar. Celle-ci sera b THREAD [ par LHOLVOET ] Bonjour,J'ai écris un programme en VB qui utilise des THREADS (indispensable pour ce programme).Malheureusement, VB plante sans cesse avec les threads Probleme de comprehension Thread [ par chtiyoyo ] Bonjour,avant tout je tiens a m'excuser pour tous les accents oublie mais je suis sur un qwerty alors pas facile. Apres pas mal de recherche a travers Est-ce que un Tclientsocket peut recevoir une image de la part d'un Tserversocket??? [ par atupac1 ] Mon programme client tourne est fait en delphi5 et doit envoyer une liste Tstringlist par socket á un autre programme Serveur qui tourne sous java. Ce Problème avec les variables et les unités [ par christoufe ] Bonjour à tous. Je vous explique en bref mon problème : j'ai un programme principal avec dedans un certain nombre de variables que j'aimerais réutil Début en Evenementiel sur Delphi 5 [ par calvin74 ] Bonjour à tous ,Voila je débute en Delphi 5 et jai un petit probleme .J'ai fais un petit programme en Evenementiel ( une calculatrice pour etre exact Vérifier le type d'une valeur du registre [ par fgsav ] Bonsoir à tous et merci de vous intéresser à mon problème.Voilà mon programme a besoin d'aller lire certaines valeurs dans le registre, mais je rencon affichage d'après un fichier [ par guigui265 ] bjr,j'ai un fichier repertoire qui contient nom,prénom....en cliquant sur le bouton afficher,toutes lé données s'affichent dans un listbox.mais je n'a


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.