Usługa ScriptForge.Timer

Usługa Timer mierzy ilość czasu potrzebnego na uruchomienie skryptów użytkownika.

Timer mierzy czas trwania. To może być:

Ikona wskazówki

Czasy trwania wyrażane są w sekundach z dokładnością do 3 cyfr dziesiętnych (milisekund). Wartość czasu trwania wynosząca 12,345 oznacza 12 sekund i 345 milisekund


Wywoływanie usługi

Przed użyciem usługi Timer należy załadować lub zaimportować bibliotekę ScriptForge:

note

• Podstawowe makra wymagają załadowania biblioteki ScriptForge przy użyciu następującej instrukcji:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Skrypty Pythona wymagają importu z modułu scriptforge:
from scriptforge import CreateScriptService


W języku Basic

Poniższy przykład tworzy obiekt Timer o nazwie myTimer i natychmiast go uruchamia.


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim myTimer As Variant
    myTimer = CreateScriptService("Timer", True)
    ' Jeśli drugi argument ma wartość True (domyślnie jest to False), pomiar rozpocznie się natychmiast
  

Zaleca się zwolnienie zasobów po użyciu:


    Set myTimer = myTimer.Dispose()
  
W języku Python

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

Właściwości

Nazwa

Tylko do odczytu

Typ

Opis

Duration

Tak

Double

Rzeczywisty czas pracy, jaki upłynął od rozpoczęcia lub pomiędzy rozpoczęciem a zatrzymaniem (nie uwzględnia czasu zawieszenia)

IsStarted

Tak

Boolean

True, kiedy licznik jest uruchamiany lub wstrzymywany

IsSuspended

Tak

Boolean

True, kiedy licznik jest uruchamiany i wstrzymywany

SuspendDuration

Tak

Double

Rzeczywisty czas, jaki upłynął w trybie wstrzymania od uruchomienia lub pomiędzy rozpoczęciem a zatrzymaniem

TotalDuration

Tak

Double

Rzeczywisty czas, jaki upłynął od rozpoczęcia lub pomiędzy rozpoczęciem a zatrzymaniem (w tym wstrzymania i czas pracy)


Ikona wskazówki

Należy pamiętać, że właściwość TotalDuration jest równoważna zsumowaniu właściwości Duration i SuspendDuration.


Metody

Wszystkie metody nie wymagają argumentów i zwracają wartość Boolean.

Jeśli zwrócona wartość to False, oznacza to, że nic się nie stało.

Nazwa

Opis

Zwrócona wartość

Continue

Wznawia działanie Timer, jeśli zostało zawieszone

False, jeśli licznik nie jest wstrzymany

Restart

Zatrzymuje Timer, odrzuca bieżące wartości właściwości i uruchamia ponownie jako nowy Timer

False, jeśli licznik jest nieaktywny

Start

Rozpoczyna nowy, czysty pomiar

False, jeśli licznik już rozpoczęto

Suspend

Wstrzymuje działający licznik

False, jeśli licznik nie został uruchomiony lub został już wstrzymany

Terminate

Zatrzymuje działający licznik

False, jeśli licznik nie został uruchomiony ani wstrzymany


Przykład:

Poniższe przykłady w języku Basic i Python ilustrują użycie metod i właściwości usługi Timer.

W języku Basic

    myTimer.Start()
    Wait 500
    myTimer.Suspend()
    ' Czas, który upłynął, gdy okno dialogowe jest otwarte, będzie liczony jako czas wstrzymania
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Continue()
    Wait 500
    ' Czas, który upłynął, gdy okno dialogowe jest otwarte, będzie liczony jako czas działania
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Terminate()
    ' Pokazuje końcowe pomiary czasu
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
  
note

Jeśli wywołasz metodę Terminate, kolejne wywołania metody Continue nie wznowią pomiaru czasu. Podobnie, po zakończeniu licznika, wywołanie metody Start zrestartuje go tak, jakby był to nowy, czysty pomiar.


W języku 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

Należy pamiętać, że funkcja Wait w języku BASIC przyjmuje argument czasu trwania w milisekundach, podczas gdy funkcja sleep w Pythonie używa w swoim argumencie sekund.


Praca z wieloma licznikami

Możliwe jest równoległe utworzenie wielu usług Timer, co zapewnia elastyczność pomiaru czasu w różnych częściach kodu.

Poniższy przykład ilustruje, jak utworzyć dwa obiekty Timer i uruchomić je oddzielnie.

W języku Basic

    Dim myTimerA as Variant, myTimerB as Variant
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    ' Uruchamia myTimerA
    myTimerA.Start()
    Wait 1000 'Wait 1 second (1,000 milliseconds)
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    ' Uruchamia myTimerB
    myTimerB.Start()
    Wait 1000
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    ' Zakończ oba liczniki
    myTimerA.Terminate()
    myTimerB.Terminate()
  
W języku 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

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.


Prosimy o wsparcie!