cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
6 déc. 2017 à 18:23
Whismeril
Messages postés18610Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention25 septembre 2023
-
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
Whismeril
Messages postés18610Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention25 septembre 2023629 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