Timer ocx a interval long (multi-usage : classique, benchmark, horloge)

Soyez le premier à donner votre avis sur cette source.

Vue 9 948 fois - Téléchargée 1 149 fois


Description

Un petit Timer sans prétention, pour remplacer celui de VB.
3 options : (expliquées sur la Form > How To use)

Classical -> Comme celui de Vb, plus précis, avec un intervalle "Long" et non pas "Integer".
Bench -> calcul entre son démarrage et sa fin, en Currency millisecondes, par QueryPerformance ou GetTicket à défaut.
Watch -> envoie un évènement à chaque seconde, minute, heure.

Invisible au RunTime, et on ne peut pas changer son type pendant qu'il est en Enabled=True.
pour tester l'erreur retournée : AfTimer1.TypeTimer=Watch
s'il est sur True et différent de Watch, l'erreur 231 se produit.

Conclusion :


Pour avoir les performances réelles, compilez ce contrôle (OCX).
Si vous avez des suggestions, améliorations, questions, commentaires (+note), je suis là ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
7
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
30 août 2006

comme vous aller l'air à bien connaître les timer, j'ai une question pour vous. J'ai fais un petit programme console qui va vérifier l'utilisation du CPU et de la mémoire sur un Serveur (Windows server 2003). Ensuite, celui-ci enregistre les données dans la BD et enregistre également une erreur dans la BD si le % d'utilisation préalablement déterminé est dépassé. J'utilise un timer (VB) pour vérifier l'utilisation CPU/MEM, l'intervalle est prédéfini par un utilisateur. Tout fonctionne bien. Cependant, après un certain temps aléatoire, le timer arrête sans raison apparente. Aucune erreur enregistré dans Event LOG, aucune exeption "catcher" dans le programme non plus. Auriez-vous une idée de la cause de ce problème et qu'est-ce que je pourrais faire pour remédier à cette situation ?

merci
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
merci ;)



code -> parce que je suis dans les OCX depuis peu, c'est pour me faire la main.
parce qu'en classe, çà existe déjà.
pour vraiment remplacer le TimerVB, donc dans les outils ;)
(mais tu es le 2e à m'en faire la remarque)

distribution -> l'ocx compilé est fourni dans un fichier Release, je ne vois pas le problème de référencer un projet recompilable, à un projet exemple....
ou alors j'ai mal compris.... (?)


çà fait plaisir en tout cas
PCPT
Messages postés
242
Date d'inscription
jeudi 8 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2005

Intérêt du programme: 10/10
Utile, vu le contrôle Timer de VB.

Code: 8/10
Pourquoi pas une classe plutôt qu'un OCX?

Distribution: 6/10
Editer le vbp pour les références, hum.

Pédagogie: 10/10
Bien les explications sur l'interface.

Interface: 10/10
Bon design!

Conclusion: un bon contrôle ActiveX.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
Afyn -> ok, merci pour ces précisions. je ne pense pas faire évoluer ce timer, pour le moment du moins, mais j'ai feuilleté un peu la MSDN en rapport à tes informations.
peut-être m'y plongerais-je + un jour...

All -> zip mis à jour, avec la correction de l'intervalle (le "End If" trop haut).
et j'en ai profité pour le passer à 10 par défaut et 10 en cas d'erreur, en laissant la possibilité de le descendre jusqu'à 1 comme le Timer VB (même si il n'y en a pas d'utilité)

PCPT
Messages postés
608
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016

Quelques Infos :
Plusieurs Types de Timers :
Timer VB : intervalle min 18 ms !
Timer API SetTimer : intervalle min 10 ms (low priority)

Pour avoir un intervalle à la milliseconde :
Multimedia Timer : (winMM.dll) Win 95 -> Win XP
- Il faut que le PC soit équipé d'un Timer assez précis
(mais ça semble etre le cas de tous les PC !)
- Il faut régler la précision de l'horloge interne au max
- Le timer crée un Thread supplémentaire
-> un trés bon exemple Le RSTimer (environ 1 % du proc)
composant free mais sans les sources

Ensuite viens le waitable timer soit disant plus léger
en ressource, qui s'éxécute dans le même thread, peut
être utile pour débugger. précis 1 ms également en ajustant
l'horloge système avec les API WinMM.

Sur XP, le top serait le TimerQueueTimer, moins de ressources
processeur. Mais là ... entre la théorie et la pratique ...
Si tu veux je te passe un exemple ... de code qui marche
dans l'IDE, mais qui plante en compilé quand on essaye
d'accéder à des variables Objets (commme un shape par ex)
Impossible de trouver un exemple fonctionnel. J'aimerai
bien que quelqu'un m'explique pourquoi ça plante ?
(peut etre un appel a la vm qui n'est pas safe)

Voilà, mes connaissance ne vont guère plus loin ...

En fait, il faudrait également connaitre le système
de message win, savoir quels messages sont traités
avant les autres pour mettre aux point un timer,
car ça ne sert à rien de savoir envoyer des
messages de façon précises, s'il sont traités
en dernier ...

Il y a surement des trucs à explorer du coté des
interruptions, ou de la façon dont sont programmé
les drivers.

Bon courage

Afyn
Navedac
Afficher les 10 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.