Timer (fiabilité)

Résolu
Utilisateur anonyme - Modifié le 30 déc. 2010 à 15:09
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 - 30 déc. 2010 à 15:09
Bonjour,

J'ai écris un programme VB.net qui tourne 24h/24h et qui dois exécuter des actions à des heures précises.

Je veut par exemple que tous les jours à 15:25:00 il m'ouvre une playlist musicale.

J'ai donc créé un timer à Interval de 1000 pour vérifier à chaque "Tick" si l'heure de maintenant est égale à 15:25:00.

Généralement ça fonctionne très bien, seulement, parfois, comme hier, il a passé l'heure sans exécuter l'action. Comme s'il avait passé ma seconde sans rien faire.

Comment est-ce possible ? Y a t'il une solution plus précise ?

Merci :)

A++

8 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 déc. 2010 à 14:05
Salut

C'est possible que quand l'évenement timer_tick
a été relevé et que tu verifies l'heure
l'heure à comparer est déjà passer
l'évenement du timer est relevé en théorie toute
les timer.interval que tu as défini mais seulement pas avant d'avoir terminé la sub ou la
fonction
Faut il que le playlist soit executé à la seconde précise ?
Si non
Tu peux peut etre verifier si l'heure est entre
15:25:00 et 15:25:03 et exécuter le playlist
un truc du genre
if time >= 15:25:00 and time <= 15:25:03 then
if not playlistjoue then 'playlistjoue boolean variable indique si le playlist joue
exécute playlist
end if
end if
3
Oui je pense que c'est la seule solution pour être sur qu'il exécute ma tâche.

ou Agrandir l'interval du Tick toutes les minutes, et ne plus parler en secondes ?

Merci pour ta réponse,
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 déc. 2010 à 22:42
non au contraire diminues ton interval à 1
comme ça tu as plus de chance de saisir l'heure
parce que dans ce cas l'évenement tick est relevé
tous les 1 milisecondes environ
donc tous les millisecondes tu verifies l'heure
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 déc. 2010 à 00:17
Consomme trop de ressources ... Ne serait-ce pas une meilleure idée d'utiliser les tâches planifiées de Windows pour ce genre d'actions ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hello,

Bonne idée, mais non, j'exécute des codes bien précis. Ca aurait été plus simple en effet :-)

A++
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 déc. 2010 à 00:27
Ca ne marcherait pas en utilisant les arguments en ligne de commande ?

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Non plus.

Je compare dorénavant juste l'heure et les minutes pour être sur.

Merci pour vos réponses

A++
0
cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
30 déc. 2010 à 15:09
Salutation,
En connaissant l'heure de ton action tu pourrais ne pas faire de teste sur l'heure au niveau de ton timer durant les 24 heures car cela prend de la ressource.
Fait donc un teste juste 15 secondes avant l'heure choisie
15:25:00 = 55500 donc a 55485 secondes tu controles ton heure jusqu'a ce que l'action soit faite tu compare ton 55485 a heure du PC tranformer en seconde comme ca pas besoin de compter sur le timer.
bonne continuation
0
Rejoignez-nous