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

##### 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)
        'The timer starts immediately when the second argument = True, default = False

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)

Note that the TotalDuration property is equivalent to summing the Duration and SuspendDuration properties.

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

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

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

Beware that the Wait function in Basic takes in a duration argument in milliseconds whereas the sleep function in Python uses seconds in its argument.

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

All ScriptForge Basic routines or identifiers that are prefixed with an underscore character "_" are reserved for internal use. They are not meant be used in Basic macros or Python scripts.

Liknande emne

Now-funksjonen

Timer Function