Déclencher Timer.Tick événement

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 6 déc. 2017 à 18:23
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 - 6 déc. 2017 à 20:08
Bonjour,
Essayant de programmer un chrono au centième de secondes
un simple test
J'assigne à un timer un intervale de 10 millisecondes et l'arrete après 5 secondes

 Private Sub Timerwatch_Tick(sender As Object, e As System.EventArgs) Handles Timerwatch.Tick
Timerwatch.Interval = 10

'increase One-hundredth
hund += 1
If hund = 500 Then
Stop
End If
End Sub


si je compare avec le clock du pc ,le debugger stop après 8 secondes
A voir également:

1 réponse

Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 656
Modifié le 6 déc. 2017 à 20:09
Bonsoir

Tu le sais peut-être (cette ligne me le fait penser)
Timerwatch.Interval = 10

Mais au cas ou,
un timer génère le Tick après l'intervalle, donc quand tu le lances ça attend (10 ms dans ton cas) avant d'exécuter le code.

Ensuite, j'ai constaté que l'intervalle est plus ou moins bien respecté, je pense (sans aucune certitude) que cela est due à la gestion des priorités inter-thread.
Le timer tourne sur son propre thread, sinon ça bloquerait ton programme, mais l'évènement est thread-safe, donc il y a bien une gestion.
Si celle-ci dure 2-3 ms, à la fin ça se voit, surtout sur des petits intervalles.

Je te conseille de mesurer le temps avec un stopwatch, c'est fait pour et de faire tourner ton timer à 1 ms.
Car même si au final tu fais moins de tours que prévus, le temps mesuré est le bon.


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
Rejoignez-nous