Inhoud

# Service ScriptForge.Timer

De service Timer meet de hoeveelheid tijd die nodig is om gebruikersscripts uit te voeren.

Een Timer meet de tijdsduur. Het kan zijn:

- Gestart, om aan te geven wanneer te beginnen met het meten van de tijd.

- Opgeschort, om de looptijdmeting te stoppen.

- Hervat om de looptijd voort te zetten nadat de timer is onderbroken.

- Opnieuw gestart, waardoor eerdere metingen worden geannuleerd en de Timer op nul begint.

De tijdsduur wordt uitgedrukt in seconden met een precisie van 3 decimalen (milliseconden). Een waarde van 12.345 betekent 12 seconden en 345 milliseconden

## Service aanroep

Voordat de service Timer gebruikt kan worden, moet de bibliotheek ScriptForge eerst worden geladen of geïmporteerd:

• Basic macro's kunnen de bibliotheek ScriptForge laden met de instructie:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts kunnen de module scriptforge importeren met:
from scriptforge import CreateScriptService

##### In BASIC

Het onderstaande voorbeeld maakt een object Timer met de naam myTimer en start het onmiddellijk.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        'De timer start onmiddellijk wanneer het tweede argument = True, standaard = False

Het wordt aanbevolen om na gebruik middelen vrij te maken:

        Set myTimer = myTimer.Dispose()

##### In Python

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

## Eigenschappen

Name | AlleenLezen | Type | Beschrijving
--- | --- | --- | ---
Duration | Ja | Double | De werkelijke looptijd die is verstreken sinds de start of tussen start en stop (houdt geen rekening met opgeschorte tijd)
IsStarted | Ja | Boolean | Waar indien de timer wordt gestart of onderbroken
IsSuspended | Ja | Boolean | True indien de timer wordt gestart en onderbroken
SuspendDuration | Ja | Double | De werkelijke verstreken tijd tijdens de onderbreking sinds de start of tussen start en stop
TotalDuration | Ja | Double | De werkelijke verstreken tijd sinds start of tussen start en stop (inclusief schorsingen en looptijd)

Merk op dat de eigenschap TotalDuration gelijk is aan het optellen van de eigenschappen Duration en SuspendDuration.

## Methodes

Alle methodes hebben geen argumenten nodig en retourneren een booleaanse waarde.

Als de geretourneerde waarde False is, is er niets gebeurd.

Name | Beschrijving | Geretourneerde waarde
--- | --- | ---
Continue | Hervat de Timer als deze is onderbroken | False als de timer niet is onderbroken
Restart | Beëindigt de Timer en verwijdert de huidige eigenschapswaarden, herstart als een nieuwe schone Timer | False als de timer inactief is
Start | Start een nieuwe timer | False als de timer al is gestart
Suspend | Onderbreekt een lopende timer | False als de timer niet is gestart of al is onderbroken
Terminate | Stopt een lopende timer | False als de timer niet is gestart of onderbroken

### Voorbeeld:

De onderstaande voorbeelden in Basic en Python illustreren het gebruik van de methodes en eigenschappen in de service Timer.

##### In BASIC

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        'De tijd die is verstreken terwijl het dialoogvenster open is, wordt geteld als onderbroken tijd
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        'De tijd die is verstreken terwijl het dialoogvenster open is, wordt geteld als looptijd
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        'Toont de laatste tijdmetingen'
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Als u de methode Terminate aanroept, wordt de tijdmeting niet hervat bij volgende aanroepen van de methode Continue. Evenzo, nadat een Timer is beëindigd, zal het aanroepen van de methode Start deze herstarten alsof het een nieuwe Timer is.

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

Houd er rekening mee dat de functie Wait in BASIC een duurargument in milliseconden opneemt, terwijl de functie sleep in Python seconden in zijn argument gebruikt.

## Werken met meerdere timers

Het is mogelijk om meerdere services Timer parallel te instantiëren, wat flexibiliteit geeft bij het meten van tijd in verschillende delen van de code.

Het volgende voorbeeld illustreert hoe u twee Timer-objecten kunt maken en deze afzonderlijk kunt starten.

##### In BASIC

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        'Start myTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Start myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Beëindig beide timers
        myTimerA.Terminate()
        myTimerB.Terminate()

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

Alle ScriptForge Basic-routines of variabelen die beginnen met een underscore "_" zijn voor intern gebruik. Gebruik deze niet in een Basic of Python-macro.

Verwante onderwerpen

Functie Now

Functie Timer