Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1331 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [ VC++ ] Les timers sont-ils "locaux" à un formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ VC++ ] Les timers sont-ils "locaux" à un formulaire

n°1271953
jeoff
Posté le 22-12-2005 à 17:11:52  profilanswer
 

Bonjour,
 
Dernièrement, j'ai eu un bug sur mon appli.  
Quasi-impossible à tracer malheuresement, bug aléatoire que je soupçonne être lié à un traitement RT.
Donc j'ai bien relu mon code et fait quelques modifs.
 
Parmis celles-ci, j'ai remarqué que j'avais deux timers chacun dans un formulaire différent. Le premier formulaire appelant le second, j'ai donc deux timers qui tournent en simultané.
--------------
Mais l'appel était identique dans ces deux formulaires:
 
SetTimer(3,30000,0);
 
3 étant mon numéro de timer.
--------------
mon événement OnTimer était le suivant dans les deux formulaires.

Code :
  1. Formulaire A
  2. void form1::OnTimer(UINT nIDEvent)
  3. {
  4.   switch (nIDEvent)
  5.   {
  6.     case 3:
  7.     {fonction_A;}break;
  8.   }
  9.   CDialog::OnTimer(nIDEvent);
  10. }
  11. Formulaire B
  12. void form1::OnTimer(UINT nIDEvent)
  13. {
  14.   switch (nIDEvent)
  15.   {
  16.     case 3:
  17.     {fonction_B;}break;
  18.   }
  19.   CDialog::OnTimer(nIDEvent);
  20. }


Du fait que mon timer tA du formulaire fA et le timer tB du formulaire fB aient le même numéro de timer et s'exécutent au même moment je me suis posé la question suivante :
 
Si tA se "déclenche", est-ce que seul l'événement OnTimer du formulaire A sera executé ou bien est-ce que tous les événements OnTimer dont les formulaires sont en cours d'éxécution seront executés (donc le déclenchement de tA exécutera OnTimer dans les deux formulaires car numéro identique)  ???
 
Merci a ceux qui prendront le temps de lire/répondre. Mon bug est ptet ailleurs mais c'est la seule piste que j'ai actuellement :sweat:


Message édité par jeoff le 22-12-2005 à 17:12:53
mood
Publicité
Posté le 22-12-2005 à 17:11:52  profilanswer
 

n°1272012
olivthill
Posté le 22-12-2005 à 18:20:55  profilanswer
 

Théoriquement chaque timer est indépendant, mais je n'ai jamais essyé en donnant des numéros identiques pour plusieurs timers.
Par ailleurs, il faut savoir que les timers ne sont pas très précis, donc il peut arriver que deux timers indiquent le même temps. D'autre part, pour que l'évènement associé à un timer soit exécuté, il faut que la fenêtre puisse retirer le message du timer de la file d'attente. Or la boucle de traitement des messages peut parfois être ralentie par d'autres processus, et la file d'attente des messages peut être assez encombrée dans certaines circonstances. Donc plutôt qu'un timer, on utilise souvent d'autres moyens de synchronisation, tel un drapeau en mémoire global, ou dans un atome, ou dans un fichier, ou un WaitForSingleObject() quand on a différentes threads.

n°1272261
jeoff
Posté le 23-12-2005 à 10:20:35  profilanswer
 

Je désactive désormais le timer en cours avant de lancer le formulaire suivant, tous les timers ont un n° différent. Pour l'instant ca ne plante plus mais bon ... ca ne veux pas forcèment dire que j'ai résolu le problème :/ d'où ma question sur la "localité" des timers.
 
Je n'ai pas l'utilité de synchroniser les formulaires entre eux, les timers servent juste ici à des fins de rapatriment de données à intervalles réguliers pour rafraichir l'affichage. Donc inutile de rafraichir un formulaire en arrière plan :).
 
Merci pour le cours particulier ;) ca m'éclaire au moins sur une partie du fonctionnement :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [ VC++ ] Les timers sont-ils "locaux" à un formulaire

 

Sujets relatifs
Sécurisation des envois de formulaire ? + expressions régulièresformulaire php
[ACCESS]passage de paramètre entre formulaire et étatTimers en cascades
Mettre un formulaire dans un mailMettre à jour un classeur Excel intégré dans un formulaire Access
insérer automatiquement une date dans un formulaireformulaire de type file et le chemin complet
[PHP] Formulaire qui se reremplit si erreurInclure formulaire : probleme avec explorer mais pas firefox
Plus de sujets relatifs à : [ VC++ ] Les timers sont-ils "locaux" à un formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR