Timer qui se gèle
NseaProtector
Membre
Bonjour,
Quand j'utilise un NSTimer, mon timer se gèle lorsque j'utilise l'interface de mon projet !
Est-ce qu'il y'a une solution, ou bien dois-je faire autrement ?
(Mon but est de faire clignoter "une led" selon un tempo)
Quand j'utilise un NSTimer, mon timer se gèle lorsque j'utilise l'interface de mon projet !
Est-ce qu'il y'a une solution, ou bien dois-je faire autrement ?
(Mon but est de faire clignoter "une led" selon un tempo)
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peut-être qu'un timer Carbon serait une soluce, mais j'en suis pas sûr ???
Le truc c'est que de toute manière si le Timer touche à l'interface, il sera bloqué quand même, quelle que soit la méthode utilisée.
Il y'a bien une solution, tout les séquenceurs font ça
Donc si on fait un pseudo Timer dans un autre thread qui agit sur l'interface, il fonctionnera mais les événements s'appliquant à l'interface seront empilés, et dépilés uniquement quand le bouton du slider sera relâché.
Un NSTimer dans un autre thread devrait fonctionner si le thread a une runloop qui gère les événements...
Sinon, j'ai utilisé un timer carbon une fois, ça bloque pas quand on manipule les objets de la fenêtre, ça bloque pas quand on navigue dans les menus, par contre ça bloque dès qu'on redimensionne la fenêtre.
pour installer un timer c'est :
OSStatus err=InstallEventLoopTimer (GetMainEventLoop (),0.3,.11,NewEventLoopTimerUPP(timerAction),this,&_timer);
et pour désintaller:
RemoveEventLoopTimer(_timer);
(voir la doc)
Voila ce que j'ai fait:
Un timer pour updater l'interface
et une horloge dans un Thread