Animation, timer [Résolu]

Signaler
Messages postés
31
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
15 septembre 2013
-
Messages postés
31
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
15 septembre 2013
-
bonjour ,
je veux juste savoir comment faire pour qu'un timer soit toujours en execution (pas d'interuption)
car j'utilise des bases de donnée de grande taille et quand je fait par exemple table1.open l'animation qui est liée au timer s'arrete jusqu'a la fin de l'instruction .
langage DEILPH
merci d'avance

 

5 réponses

Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
je connais pas le langage DEILPH ... ^^

Normalement un timer ne s'arrête pas tant que son intervalle n'est pas définie à 0 ou sa propriété Enabled à False. Néanmoins, il utilise les ressources système pour se répéter, donc il peut avoir des problèmes de fonctionnement en cas de surcharge des ressources système.
Essaye de rendre plus légère ta base, de la faire fonctionner plus fluidement, et place eventuellement un Application.ProcessMessages dans ton timer.
Ou utilise un Thread.

Cordialement, Bacterius !

Salut : Petite correction Bacterius
"son intervalle n'est pas définie à 0" : un timer admet comme valeur limite non pas zéro mais 17ms donc quant on utilise un interval inférieur à 17 l'interval réel est de 17ms
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Ah, je ne savais pas ^^ merci Francky.

Cordialement, Bacterius !
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
5
je pense que, si ton application est monothread, le lancement de la procedure associée au OnTimer se fera une fois la procedure en cours terminée.
Par exemple, si tu as un timer avec un interval de 1000, et que la procedure OnTimer est la suivante :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  sleep(5000);
end;

alors le 2eme appel de cette procedure ne se fera pas 1s apres la premiere, mais 5s apres, le temps de terminer le 1er appel.

donc, si tu veux que ton traitement lourd n'interfere pas sur le timer, je te conseille plutot de faire ce traitment dans un thread a part.

@francky : tres interessant comme remarque
Messages postés
31
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
15 septembre 2013

merci infiniment pour vos reponces