Indhold
Indholdsfortegnelse 🔎︎

# Tjenesten ScriptForge.Timer (stopur)

Tjenesten Timer (stopur) måler den tid, det tager at køre brugerscripts.

En Timer Måler varigheder. Det kan være:

- Startet, for at vise, hvornår tidstagningen starter.

- Udsat, pause i målingen af den løbende tid.

- Genoptaget, for at fortsætte målingen af den løbende tid, efter at timeren har været stoppet.

- Genstartet, hvilket vil annullere de tidligere målinger starter Timeren fra nul.

Varigheder udtrykkes i sekunder med en præcision på 3 decimalcifte (tusindedele af et sekund). En varighed på 12,345 betyder 12 sekunder og 345 tusindedele

## Kald af tjeneste

Før brug af tjenesten Timer skal biblioteket ScriptForge være indlæst eller importeret:

• Basic-makroer kræver, at biblioteket ScriptForge indlæses med følgende udtryk:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-scripts kræver import af scriptforge-modulet:
from scriptforge import CreateScriptService

##### I Basic

Eksemplet herunder opretter et Timer (stopur)-objekt kaldet myTimer (mit stopur) og starter det øjeblikkeligt.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        ' Timeren starter straks, når det andet argument = True (Sand), standard = False (Falsk)

Det anbefales at frigøre ressourcer efter brug:

        Set myTimer = myTimer.Dispose()

##### I Python

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

## Egenskaber

Navn | Readonly (skrivebeskyttet) | Type (type) | Beskrivelse
--- | --- | --- | ---
Duration | Yes (ja) | Double | Den faktisk løbende tid, der er gået fra start eller mellem start og stop (medregner ikke tid under pauser)
IsStarted | Yes (ja) | Boolean | True (sand), når timeren er startet eller eller på pause
IsSuspended | Yes (ja) | Boolean | True (sand), når timeren er startet eller på pause
SuspendDuration | Yes (ja) | Double | Den faktiske tid under pauser siden start eller mellem start og stop
TotalDuration | Yes (ja) | Double | Den faktiske tid, der er gået efter start eller mellem start og stop (medregnet pauser og løbende tid)

Bemærk, at egenskaben TotalDuration svarer til at opsummere egenskaberne Duration og (varighed) SuspendDuration (suspender_varighed).

## Metoder

Ikke alle metoder kræver argumenter og returnerer en Boolean (Boolsk) værdi.

Hvis den returnerede værdi er False (falsk), er der ikke sket noget.

Navn | Beskrivelse | Returned value (returneret værdi)
--- | --- | ---
Continue | Genoptager Timeren, hvis den har været stoppet | False (falsk), hvis timeren ikke er på pause
Restart | Afslutter Timeren og kasserer dens aktuelle egenskabsværdier, mens den genstartes som en ny, ren Timer | False (falsk), hvis timeren er deaktiveret
Start | Starter en ny, ren timer | False (falsk), hvis timeren allerede er startet
Suspend | Sætter en løbende timer på pause | False (falsk), hvis timeren ikke er startet eller allerede er sat på pause
Terminate | Stopper en løbende timer | False (falsk), hvis timeren hverken er startet eller sat på pause

### Eksempel:

Eksemplerne herunder i Basic og Python illustrerer brugen af mtoder og egenskaber i tjenesten Timer (tidstager).

##### I Basic

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        'Tiden, der går, mens dialogfeltet er åbent, regnes som pausetid
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        'Tiden, der går, mens dialogfeltet er åbent, regnes som løbende tid
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        'Viser den endelige tidstagning
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Hvis du kalder metoden Terminate (afslut) og efterfølgende kalder metoden Continue (fortsæt) fortsættes tidtagningen ikke. Hvis du ligeledes kalder metoden Start, efter at en timer er afsluttet, genstartes den, som om den var en ren, ny timer.

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

Husk, at funktionen Wait ()vent i Basic tager imod et varigheds-argument i millisekunder, mens funktionen sleep (sov) i Python bruger sekunder i sit argument.

## Arbejde med flere timere

Det er muligt at instantiere flere forekomster af tjenesten Timer (stopur) parallelt, hvad der giver fleksibilitet i tidtagningen i forskellige dele af koden.

Det følgende eksempel illustrerer, hvor der oprettes forekomster af objektet Timer (stopur) og startes separat.

##### I Basic

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        'Starter myTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Starter myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Afslutter begge timere
        myTimerA.Terminate()
        myTimerB.Terminate()

##### I 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-rutiner eller identifikatorer, der er indledet med et understreget tegn "_" er reserveret til internt brug. Det er ikke meningen, at de skal bruges i Basic-makroer eller Python-scripts.

Relaterede emner

funktionen Now

Tidstagnings-funktion