Bonjour,
J'aurais besoin de votre aide pour un petit souci :.
voici le contexte j'ai un appli développée en c# .Net 2.0 qui tourne sous Windows XPe .
L'appli reçoit des mesures de différents capteurs qu'elle doit intégrer pour calculer une dose.
Il y a donc un timer ( 5 sec) qui prend la valeur sur le capteur regarde l'heure grâce à system.DateTime.now fait la différence par rapport à l'heure de la dernière acquisition car le timer ne se déclenche pas toujours au bout d'exactement cinq secondes puis multiplie ce temps par la valeur du capteur.
Mon problème est donc le suivant : comment être sur que le temps Windows (la différence entre les deux DateTime.Now) soit vraiment le temps "réel"
D'après ce que j'ai compris de la gestion de l'heure de Windows :
Il y la clock hardware RTC qui est géré au niveau de la carte mère et dont la valeur est accessible au niveau du BIOS.
Windows gère une clock software : elle se synchronise avec la clock RTC au démarrage du système puis récupère des interruptions de la clock RTC afin de " voir" le temps passé.
Il semble que de temps en temps Windows rate certaine de ces interruptions ce qui a pour effet de " ralentir " le temps Windows.
Concrètement Windows m'annonce 5 secondes alors qu'en fait 5,1 secondes se sont déroulées. L'effet le plus visible est l'heure windows qui varie fortement lorsqu'on laisse un PC Windows tourné longtemps.
Ensuite j'ai un peu un manque d'information et c'est là que j'aurais besoin de votre aide :
Existe il des donnée Windows permettant de quantifier à peu près cette dérive, connaissez vous des documents à ce sujet ?
J'ai lu par ci par la que la clock Windows se synchronise avec la clock RTC lorsque la différence entre les 2 est supérieur à 1 sec et effectue cette vérification à peu près toute les heures.
J'ai trouvé un soft ClockMon qui est censé resynchroniser l'horloge RTC et Windows plus régulièrement mais je ne suis pas trop sur de sa fiabilité quelqu'un a t'il des infos sur ce soft.
L'autre solution est de lire directement la Clock RTC dans mon appli C# , il semble que je peux lire directement cette valeurs en tapant dans un registre via des classe WMI ou je ne sais quoi.
Quelqu'un a il déjà fait ce genre de chose ?
Merci à ceux qui sont arrivé au bout ! et merci d'avance à ceux qui pourront me donner un coup de main car j'ai du mal à trouver de l'info fiable sur le Web
Olivier
Partager