Obsah

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

- Spustit a označit tak začátek měřeného času.

- Pozastavit během měření běžící času.

- Pokračovat v měření poté, co byl Timer pozastaven.

- Restartovat a zrušit tak předchozí měření spustit Timer od nuly.

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

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

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

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

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

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.

Související témata

Funkce Now

Funkce Timer