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!