Lancer un Timer depuis un thread

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Lancer un Timer depuis un thread

Message par Torp »

Bonjour à tous,

j'ai un petit problème, je n'arrive pas à lancer un timer depuis un thread. Quelqu'un a t il une idée sur le pourquoi du comment...

Code : Tout sélectionner

Procedure Timer()
  Debug "Timer"
EndProcedure

Procedure Coucou(Valeur)
  Repeat
    i+1
    If i=10
      Timer1=SetTimer_(#Null,#Null, 250, @Timer())
      Debug Timer1
    EndIf
    Debug "coucou :"+Str(i)
    Delay(Valeur)
  ForEver
EndProcedure

OpenWindow(0,100,100,100,100,#PB_Window_SystemMenu,"Essai")

Id_Thread=CreateThread(@Coucou(),1000)

Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow

End
++
Dernière modification par Torp le lun. 09/mai/2005 18:11, modifié 1 fois.
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

salut Torp
j'habite a 50 km de chez toi ...
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Essaye plutôt

Code : Tout sélectionner

Declare The_Timer()

Procedure Coucou(Valeur)
  Repeat
    i+1
    If i=10
      Timer1=SetTimer_(#Null,#Null, 250, @The_Timer())
      Debug Timer1
    EndIf
    Debug "coucou :"+Str(i)
    Delay(Valeur)
  ForEver
EndProcedure

Procedure The_Timer()
  Debug "Timer"
EndProcedure

OpenWindow(0,100,100,100,100,#PB_Window_SystemMenu,"Essai")

Id_Thread=CreateThread(@Coucou(),1000)

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow

End
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Message par Torp »

Oups en effet j'ai fait un copier/coller des procedures dans le désordre...(j'ai corrigé le post).
Le problème n'est pas là...
Merci quand meme.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

J'ai changé la procédure Timer par The_Timer car, chez moi, Timer existe déjà. Après le changement ca marche !
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Message par Torp »

Désolé mais ça marche pas. Le Timer est censé écrire dans la fenetre du Debugger le Mot "Timer" tous les quart de seconde et ce n'est pas le cas...
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Peut-être parce que, justement, le TimerProc ne retourne aucune valeur !
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Et comme ça ? :D

Code : Tout sélectionner

Declare The_Timer() 

Procedure Coucou(Valeur) 
     Repeat 
          i+1 
          If i=10 
               Timer1=SetTimer_(WindowID(0),1, 250, @The_Timer()) 
               Debug Timer1 
          EndIf 
          Debug "coucou :"+Str(i) 
          Delay(Valeur) 
     ForEver 
EndProcedure 

Procedure The_Timer() 
     Debug "Timer" 
EndProcedure 

OpenWindow(0,100,100,100,100,#PB_Window_SystemMenu,"Essai") 

Id_Thread=CreateThread(@Coucou(),1000) 

Repeat 
Until WaitWindowEvent() = #PB_Event_CloseWindow 

End 
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Effectivement, c'est beaucoup mieux (cool j'apprends pleins de choses) :)
Torp
Messages : 360
Inscription : lun. 22/nov./2004 13:05

Message par Torp »

Merci beaucoup en effet là, ca fonctionne. Pour quelle raison, lorsque l'on le lance depuis un thread, faut il le rattacher à la fenetre pour qu'il fonctionne ?
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Pour quelle raison, lorsque l'on le lance depuis un thread, faut il le rattacher à la fenetre pour qu'il fonctionne ?
je crois que un thread ne peut pas recevoir de message comme une "Windows", c'est pour cela que le timer envoyait le message je ne sais où...
Répondre