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
Message
par Torp » lun. 09/mai/2005 17:23
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 » lun. 09/mai/2005 17:27
salut Torp
j'habite a 50 km de chez toi ...
flaith
Messages : 1487 Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :
Message
par flaith » lun. 09/mai/2005 17:57
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 » lun. 09/mai/2005 18:13
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.
flaith
Messages : 1487 Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :
Message
par flaith » lun. 09/mai/2005 18:17
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 » lun. 09/mai/2005 18:25
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...
flaith
Messages : 1487 Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :
Message
par flaith » lun. 09/mai/2005 18:42
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 » lun. 09/mai/2005 18:57
Et comme ça ?
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
flaith
Messages : 1487 Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :
Message
par flaith » lun. 09/mai/2005 19:01
Effectivement, c'est beaucoup mieux (cool j'apprends pleins de choses)
Torp
Messages : 360 Inscription : lun. 22/nov./2004 13:05
Message
par Torp » lun. 09/mai/2005 19:44
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 » lun. 09/mai/2005 21:08
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ù...