Innhald
Innhaldsliste 🔎︎

# Tenesta ScriptForge.Timer

Tenesta Timer måler kor lang tid det tar å køyra brukarskript.

Ein Timer mæler tidlengd. Det kan vera:

- Starta for å visa når tidtakinga byrjar.

- Suspendert for å laga pause i målinga under køyringa.

- Gjenoppteken for å halda fram mælinga etter at «Timer» vart suspendert.

- Starta på nytt. Dette vil avbryta tidlegare målingar og starta Timer frå null.

Tidslengdene vert uttrykte i sekund med ein presisjon på 3 desimalsiffer (millisekund). Ei tidslengd på 12,345 betyr 12 sekund og 345 millisekund

## Oppkall av teneste

Før du brukar tenesta Timer, må ScriptForge-biblioteket lastast inn eller importerast:

• Grunnleggjande makroar krev innlasting av biblioteket ScriptForge ved hjelp av denne setninga:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-skript krev import frå scriptforge-modulen:
from scriptforge import CreateScriptService

##### I Basic

Eksempelet nedanfor lagar eit Timer-objekt kalla myTimer og startar det straks.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        'Teljaren startar straks når det andre argumentet = Sann, standard = Usann

Det vert tilrådd å frigjeva resursar etter bruk:

        Set myTimer = myTimer.Dispose()

##### I Python

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

## Eigenskapar

Namn | Skriveverna | Type | Beskriving
--- | --- | --- | ---
Duration | Ja | Double | Den faktiske køyretida som har gått sidan start eller mellom start og stopp (tek ikkje med i pausetid)
IsStarted | Ja | Boolean | Sann når «Timer» er starta eller eller sett på pause
IsSuspended | Ja | Boolean | Sann når «Timer» er starta eller sett på pause
SuspendDuration | Ja | Double | Den faktiske tida som har gått medan han var på pause sidan start, eller mellom start og stopp
TotalDuration | Ja | Double | Den faktiske tida som har gått sidan start, eller mellom start og stopp (medrekna pausar og løpande tid)

Merk at eigenskapen TotalDuration er det same som å summera eigenskapane Duration og SuspendDuration.

## Metodar

Ikkje alle metodar krev argument og returnerer ein Boolsk verdi.

Viss den returnerte verdien er Usann, har det ikkje skjedd noko.

Namn | Beskriving | Returnert verdi
--- | --- | ---
Continue | Startar Timer igjen viss han har vore stoppa | Usann viss «Timer» ikkje er på pause
Restart | Avsluttar Timer og forkastar gjeldande eigenskapsverdiar, startar på nytt som ein ny, rein Timer | Usann viss «Timer» er inaktiv
Start | Startar ein ny, rein «Timer» | Usann viss «Timer» alt er starta
Suspend | Set ein aktiv «Timer» på pause | Usann viss «Timer» ikkje er starta eller sett på pause
Terminate | Stoppar ein aktiv «Timer» | Usann viss «Timer» korkje er starta eller sett på pause

### Eksempel:

Eksempla nedanfor i Basic og Python viser bruken av metodar og eigenskapar i tenesta Timer.

##### I Basic

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        ' Tida som går medan dialogvindauget er ope, vert rekna som pausetid
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        ' Tida som går medan dialogvindauge er ope vert rekna som løpande tid
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        ' Viser den endelege tidtakinga
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Viss du kallar opp metoden Terminate vil ikkje etterfølgjande oppkall av metoden Continue ta opp att tidsmålinga. På same måte vil oppkall av metoden Start etter at «Timer» er avslutta, starta «Timer» på nytt som om han var ein ny, rein «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))

Ver merksam på at funksjonen Wait i BASIC brukar millisekund for kor lenge han skal vara, medan funksjonen sleep i Python brukar sekund i argumentet.

## Arbeide med fleire «Timer»

Det er mulig å setja i gang fleire Timer-tenester parallelt, noko som gjer måling av tid i ulike deler av koden meir fleksibelt.

Eksempelet nedanfor viser korleis det kan setjast opp to Timer-objekt og setja dei i gang dei kvar for seg.

##### I Basic

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        ' Startar MyTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        ' Startar myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        Avsluttar begge «Timer»
        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-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.

Liknande emne

Now-funksjonen

Tidtakings-funksjon