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

Terminates the Timer and discards its current property values, restarting as a new clean Timer

False if the timer is inactive

Start

Starts a new clean timer

False if the timer is already started

Suspend

Suspends a running timer

False if the timer is not started or already suspended

Terminate

Stops a running timer

False if the timer is neither started nor suspended


Exemple :

The examples below in Basic and Python illustrate the use of the methods and properties in the Timer service.

En Basic :

    myTimer.Start()
    Wait 500
    myTimer.Suspend()
    'The time elapsed while the Dialog box is open will be counted as suspended time
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Continue()
    Wait 500
    'The time elapsed while the Dialog box is open will be counted as running time
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Terminate()
    'Shows the final time measurements
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
  
note

If you call the Terminate method, subsequent calls for the Continue method will not resume time measurement. Similarly, after a Timer has been terminated, calling the Start method will restart it as if it were a clean new 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

Be aware that the Wait function in BASIC takes in a duration argument in milliseconds whereas the sleep function in Python uses seconds in its argument.


Working with Multiple Timers

It is possible to instantiate multiple Timer services in parallel, which gives flexibility in measuring time in different parts of the code.

The following example illustrates how to create two Timer objects and start them separately.

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
    'Terminate both timers
    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.