Tenesta ScriptForge.Timer

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

Ein Timer mæler tidlengd. Det kan vera:

Tipsikon

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:

note

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


Tipsikon

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
  
note

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

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

Alle ScriptForge Basic-rutinane og -identifikatorane som vert innleidde med understrek «_» er reserverte for internt bruk. Dei er ikkje meint brukte i Basic-makroar.


Støtt oss!