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!