Service ScriptForge.Timer

Le service Timer mesure le temps nécessaire à l'exécution des scripts utilisateur.

Un Timer mesure les durées. Ça peut être:

IcĂ´ne Astuce

Les durées sont exprimées en secondes avec une précision de 3 chiffres décimaux (millisecondes). Une valeur de durée de 12,345 signifie 12 secondes et 345 millisecondes


Invocation du service

Avant d'utiliser le service Timer, la bibliothèque ScriptForge doit être chargée ou importée :

note

• Les macros Basic nécessitent de charger la bibliothèque ScriptForge à l'aide de l'instruction suivante :
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Les scripts Python nécessitent un import depuis le module scriptforge :
from scriptforge import CreateScriptService


En Basic :

L'exemple ci-dessous crée un objet Timer nommé myTimer et le démarre immédiatement.


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim myTimer As Variant
    myTimer = CreateScriptService("Timer", True)
    'Le minuteur démarre immédiatement lorsque le deuxième argument = True, par défaut = False
  

Il est recommandé de libérer des ressources après utilisation :


    Set myTimer = myTimer.Dispose()
  
En Python

    from scriptforge import CreateScriptService
    myTimer = CreateScriptService("Timer", start = True)
    # ...
    myTimer = myTimer.Dispose()
  

Propriétés

Nom

Lecture seule

Type

Description

Duration

Oui

Double

Le temps de fonctionnement réel écoulé depuis le démarrage ou entre le démarrage et l'arrêt (ne prend pas en compte le temps suspendu)

IsStarted

Oui

Boolean

True lorsque le minuteur est démarré ou suspendu

IsSuspended

Oui

Boolean

True lorsque le minuteur est démarré et suspendu

SuspendDuration

Oui

Double

Le temps réel écoulé pendant la suspension depuis le démarrage ou entre le démarrage et l'arrêt

TotalDuration

Oui

Double

Le temps réel écoulé depuis le démarrage ou entre le démarrage et l'arrêt (y compris les suspensions et le temps de fonctionnement)


IcĂ´ne Astuce

Notez que la propriété TotalDuration équivaut à la somme des propriétés Duration et SuspendDuration.


MĂ©thodes

Toutes les méthodes ne nécessitent pas d'arguments et renvoient une valeur Boolean.

Si la valeur renvoyée est False, alors rien ne s'est produit.

Nom

Description

Valeur renvoyée

Continue

Reprend le Timer s'il a été suspendu

False si le timer n'est pas suspendu

Restart

Termine le Timer et supprime ses valeurs de propriété actuelles, redémarrant en tant que nouveau Timer propre.

False si l'horloge n'est pas active

Start

DĂ©marre une nouvelle horloge

False si l'horloge est déjà démarrée

Suspend

Suspend une horloge en cours d'exécution

False si l'horloge n'est pas démarrée ou déjà suspendue

Terminate

Arrête une horloge en cours d'exécution

False si l'horloge n'est ni démarrée ni suspendue


Exemple :

Les exemples ci-dessous en Basic et Python illustrent l'utilisation des méthodes et propriétés du service Timer.

En Basic :

    myTimer.Start()
    Wait 500
    myTimer.Suspend()
    'Le temps écoulé pendant que la boîte de dialogue est ouverte sera compté comme temps suspendu
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Continue()
    Wait 500
    'Le temps écoulé pendant que la boîte de dialogue est ouverte sera compté comme temps d'exécution
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Terminate()
    'Affiche les mesures de temps finales
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
  
note

Si vous appelez la méthode Terminate, les appels suivants pour la méthode Continue ne reprendront pas la mesure du temps. De même, après la fin d'un Timer, l'appel de la méthode Start le redémarrera comme s'il s'agissait d'un nouveau Timer.


En Python

    from time import sleep
    bas = CreateScriptService("Basic")
    myTimer.Start()
    sleep(0.5)
    myTimer.Suspend()
    bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
    myTimer.Continue()
    sleep(0.5)
    bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
    myTimer.Terminate()
    bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
  
note

Sachez que la fonction Wait en BASIC prend un argument de durée en millisecondes alors que la fonction sleep en Python utilise des secondes dans son argument.


Travailler avec plusieurs horloges

Il est possible d'instancier plusieurs services Timer en parallèle, ce qui donne de la flexibilité dans la mesure du temps dans différentes parties du code.

L'exemple suivant illustre comment créer deux objets Timer et les démarrer séparément.

En Basic :

    Dim myTimerA as Variant, myTimerB as Variant
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    'Starts myTimerA
    myTimerA.Start()
    Wait 1000 'Wait 1 second (1,000 milliseconds)
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Starts myTimerB
    myTimerB.Start()
    Wait 1000
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Terminer les deux horloges
    myTimerA.Terminate()
    myTimerB.Terminate()
  
En Python

    from time import sleep
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    myTimerA.Start()
    sleep(1)
    bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
    myTimerB.Start()
    sleep(1)
    bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
    myTimerA.Terminate()
    myTimerB.Terminate()
  
warning

Toutes les routines ou identifiants de base ScriptForge qui sont préfixés par un caractère de soulignement "_" sont réservés à un usage interne. Ils ne sont pas destinés à être utilisés dans des macros de base ou des scripts Python.


Aidez-nous !