Faire une pause dans un programme (prend en charge le passage de minuit)

Contenu du snippet

J'avais besoin de faire une pause dans un de mes programmes.

J'ai donc utilisé la fonction TIMER.
Dans l'aide de MSDN, l'exemple donné n'est pas satisfaisante car elle ne prend pas en charge le passe de minuit.
Il ne faut pas oublier que cette fonction représentant le nombre de secondes écoulées depuis minuit. L'exemple MSDN
PauseTime = 20 ' Durée de la pause.
Start = Timer ' Récuperation de l'heure de début de la pause en secondes.
Do While Timer < Start + PauseTime
DoEvents 'Donne le contrôle à d'autres processus
Loop
Cette exemple n'est pas valable car si il est 23h59min50secondes soit 86390 votre programme restera dans un boucle infini vu qu'a minuit votre Timer passera de 86399 à 0

J'ai donc modifier ce code pour prendre en charge le passage de minuit :

Source / Exemple :


Private PauseTime as Integer
Private Start as Long

'A mettre dans une procédure
PauseTime = 2   ' Durée de la pause.
Start = Timer   ' Récuperation de l'heure de début de la pause en secondes.
If (Start + PauseTime) < 86400 Then 'Test pour éviter le depassement de 60s*60min*24hrs, c'est à dire 86400 secondes, 1 jour
    Do While Timer < Start + PauseTime
        DoEvents 'Donne le contrôle à d'autres processus
    Loop
Else 'Transition entre aujourd'hui et demain
    'Cette boucle permet d'attendre que le timer se positionne à 0 soit 00 hrs 00 min 00 secondes
    Do While Timer > 1 'Mise en attente pour arriver à minuit
        DoEvents
    Loop
    'Le Timer est donc maintenant à 0
    '(PauseTime - (86400 - Start)) permet de réinitialiser le temps restant à la pause par rapport au temps déja écoulé
    Do While Timer < (PauseTime - (86400 - Start))
        DoEvents
    Loop
End If

Conclusion :


Je sais, il existe l'API Sleep.
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Après on met ou on veut faire la pause : Sleep 20000 ' Durée de la pause en millisecondes.
Le probleme c'est qu'elle garde la main pendant la durée de la pause et donc si votre application affiche l'heure, celle-ci restera figé durant le temps de la pause se qui n'est pas agréable.

Bonne prog à tous

A voir également

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.