Bonjour à tous et à toutes.
Je suis sur un problème un peu énervant que j'aimerais vous faire partager. Il n'y a pas de raison que je sois le seul à être énervé un vendredi.
Je suis dans l'exécution d'un thread que je veux répéter toutes les secondes (en tenant compte du temps de traitement, cela va sans dire).
Je code donc :
Le problème est que, après avoir essayé des trucs que j'ai trop honte de vous rapporter, j'arrive toujours à une différence de 13 ou 14 milisecondes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 while not Terminated do begin StartTime := GetTickCount; //début des manoeuvres Mon traitement; Synchronize('MonInterface'); // ElapsedTime := (1000 - (GetTickCount - StartTime)); //Je décompte le temps de traitement (GetTickCount - StartTime) de ma seconde //Sleep(ElapsedTime); //j'attends le temps nécessaire //OU (j'ai dépensé mon temps sans compter) while GetTickCount < (StartTime + 1000) do //je boucle tant que je ne suis pas arrivé à tps de traitement + ma seconde begin end; end;, des fois un peu plus, un peu moins, mais rarement.
Quelqu'un pourrait-il m'expliquer pouquoi ?
Merci d'avance.
Partager