-
timer précis en VB
Bonjour,
Le timer de visual basic est apparemment peu précis ( résolution réelle ~20ms même si on peut spécifier une valeur en ms pour la propriété 'interval' )
Pour creer un timer plus précis on peut utiliser la fonction QueryPerformanceCounter et boucler en permanence en testant la valeur retournée par cette fonction ( en insérant un DoEvents dans la boucle pour ne pas bloquer les autres tâches )
Cependant cette solution accapare beaucoup le processeur et n'assure pas une périodicité précise car pendant le DoEvents, on peut commuter sur une tâche de durée trop longue / période.
De plus la mise en parallèle de plusieurs de ces boucles avec differentes périodes devient délicate
Existe t'il un moyen d'utiliser en VB de véritables timers (hard?), précis, qui génèrent une interruption de haute priorité au moment voulu sans accaparer le processeur le reste du temps?
Merci pour toute aide.
-
les timers qu'on posent sont des system.windows.forms.timer
il existe aussi les system.threading.timer (leur evenement renvoi sur un autre thread que le principal). ils sont peut etre plus mieux
sinon ce qui se fait parfois c'est démarrer un thread sur un sub en while true
et thread.sleep()
si le traitement dure plusieurs ms on peut alors utiliser un stopwatch pour calculer le temps du traitement et modifier le sleep pour qu'il dur le reste du temps
je privilégierais cette solution au timer, au moins y a pas d'évènement (qui se retrouve sur une pile ...). chaque thread génère un thread au niveau de l'os, on peut aussi modifier la priorité du thread
-
Merci pour ta réponse,
En fait je programmais jusqu'à present en VB6 et débute à peine en .NET avec VB2005 express.
Ta méthode exige de passer en .NET ? Est ce que l'utilisation de thread.sleep permet de boucler precisement à des périodes ~ms ou plus rapides ?
-
tu es sur un forum .net, je répond en .net
vb6 et .net sont totalement différents (pas de threads deja en vb6)
thread.sleep permet de dire à thread d'attendre x millisecondes avant de passer à l'instruction suivante, sans utiliser de ressources processeur
donc ca permet d'etre très précis