Contenu
Index 🔎︎

# 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:

- Démarré, pour indiquer quand commencer à mesurer le temps.

- Suspendu, pour suspendre la mesure du temps de fonctionnement.

- Reprise, pour continuer à suivre le temps d'exécution après la suspension du minuteur.

- Redémarré, ce qui annulera les mesures précédentes et démarrera le Timer à zéro.

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 :

• 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)

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

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))

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()

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.

Rubriques connexes

Fonction Now

Fonction Timer