Služba ScriptForge.Timer

Služba Timer měří dobu, kterou trvá spouštění uživatelských skriptů.

Timer měří dobu trvání. Je možné jej:

Ikona tipu

Doby trvání jsou vyjadřovány v sekundách s přesností na 3 desetinná místa (tj. v milisekundách). Doba trvání 12.345 znamená 12 sekund a 345 milisekund.


Volání služby

Před používáním služby Timer je nutné načíst či naimportovat knihovnu ScriptForge pomocí:

note

• V makrech Basicu je nutné načíst knihovnu ScriptForge následujícím příkazem:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Ve skriptech Pythonu je nezbytné import z modulu scriptforge:
from scriptforge import CreateScriptService


V Basicu

V níže uvedených příkladech je vytvořen objekt Timer pojmenovaný myTimer a je ihned spuštěn.


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim myTimer As Variant
    myTimer = CreateScriptService("Timer", True)
    ' Když je druhý argument True (výchozí je False), začne měření okamžitě
  

Po použití se doporučuje uvolnit zdroje:


    Set myTimer = myTimer.Dispose()
  
V Pythonu

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

Vlastnosti

Název

Pouze pro čtení

Typ

Popis

Duration

ano

Double

Skutečně uplynulý čas od spuštění nebo mezi spuštěním a zastavením (neuvažuje se čas během pozastavení).

IsStarted

ano

Boolean

True, pokud je měření spuštěno či pozastaveno.

IsSuspended

ano

Boolean

True, pokud je měření spuštěno a zároveň pozastaveno.

SuspendDuration

ano

Double

Čas uplynulý během doby pozastavení měření, a to od spuštění nebo mezi spuštěním a zastavením.

TotalDuration

ano

Double

Čas uplynulý od spuštění nebo mezi spuštěním a zastavením (včetně času pozastavení a času běhu).


Ikona tipu

Vlastnost TotalDuration odpovídá součtu vlastností Duration a SuspendDuration.


Metody

Žádná metoda nevyžaduje argumenty a každá vrací booleovskou hodnotu.

Je-li návratovou hodnotou False, metoda nic neprovede.

Název

Popis

Návratová hodnota

Continue

Pokračuje v měření, pokud bylo pozastavené.

False, pokud měření pozastaveno nebylo.

Restart

Ukončí měření, zahodí aktuální hodnoty jeho vlastností a restartuje je jako nové, čisté měření.

False, pokud není měření aktivní.

Start

Spustí nové, čisté měření.

False, pokud je měření již spuštěno.

Suspend

Pozastaví běžící měření.

False, pokud není měření spuštěno nebo je již pozastaveno.

Terminate

Zastaví běžící měření.

False, pokud měření není spuštěno ani pozastaveno.


Příklad:

Níže uvedené příklady v Basicu a Pythonu ukazují použití metod a vlastností služby Timer.

V Basicu

    myTimer.Start()
    Wait 500
    myTimer.Suspend()
    ' Doba uplynulá během otevírání dialogového okna se započítá do pozastaveného času
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Continue()
    Wait 500
    ' Doba uplynulá během otevírání dialogového okna se započítá do času běhu
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Terminate()
    ' Zobrazí výsledné naměřené časy
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
  
note

Zavoláte-li metodu Terminate, následná volání metody Continue měření času neobnoví. Poté co je měření ukončeno, jej volání metody Start restartuje stejně, jako by se jednalo o nové, čisté měření.


V Pythonu

    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

Mějte na paměti, že funkce Basicu Wait přijímá v argumentu dobu trvání v milisekundách, zatímco funkce Pythonu sleep používá v argumentu sekundy.


Práce s více měřeními

Je možné vytvořit více instancí služby Timer souběžně, což umožňuje flexibilně měřit čas v různých částech kódu.

Následující příklad ukazuje, jak vytvořit dva objekty služby Timer a odděleně je spustit.

V Basicu

    Dim myTimerA as Variant, myTimerB as Variant
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    ' Spustí myTimerA
    myTimerA.Start()
    Wait 1000 'Wait 1 second (1,000 milliseconds)
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    ' Spustí myTimerB
    myTimerB.Start()
    Wait 1000
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    ' Ukončí obě měření
    myTimerA.Terminate()
    myTimerB.Terminate()
  
V Pythonu

    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

Všechny procedury nebo identifikátory knihovny ScriptForge, které jsou uvozeny podtržítkem "_", jsou určeny pro interní použití. Není zamýšleno je používat v makrech Basicu nebo skriptech Pythonu.


Podpořte nás!