J'essaie de reconstruire une ancienne application de métronome écrite à l'origine à l'aide de MFC en C++ pour être écrite en .NET à l'aide de C#. L'un des problèmes que je rencontre est de faire en sorte que la minuterie «cochée» soit suffisamment précise. Par exemple, en supposant un BPM facile (battements par minute) de 120, le temporisateur devrait cocher toutes les 5 secondes (ou 500 millisecondes). L'utilisation de ce paramètre comme base pour les ticks n'est toutefois pas entièrement précise car .NET garantit uniquement que votre minuteur ne se déclenchera pas avant que le temps écoulé ne soit écoulé. Actuellement, pour contourner le problème pour le même exemple de 120 BPM utilisé ci-dessus, je règle les ticks à quelque chose comme 100 millisecondes et je ne joue que le clic sur chaque tick de 5ème timer. Cela améliore la précision un peu, mais si on se sent un peu un hack.Obtention de mesures précises à partir d'une minuterie en C#
Alors, quel est le meilleur moyen d'obtenir des tiques précises? Je sais qu'il y a plus de minuteurs disponibles que le minuteur de formulaires Windows qui est facilement disponible dans Visual Studio, mais je ne les connais pas vraiment.
Mais alors vous ne pouvez être sûr que le fil dort au moins x millioseconds; le planificateur de thread ne certifie pas que le thread s'exécutera exactement au nombre de milleond – Wilhelm
Right. Je suis d'accord avec ce que vous avez dit à propos de ne pas être capable de déterminer l'heure de la prochaine tique. Le point de ce que je dis est que vous ne voulez pas exécuter le code d'événement tick d'une coche précédente quand votre tick suivant se produit. –