Pomoc LibreOffice 25.2
Usługa Timer mierzy ilość czasu potrzebnego na uruchomienie skryptów użytkownika.
Timer mierzy czas trwania. To może być:
Rozpoczęcie, aby wskazać, kiedy rozpocząć pomiar czasu.
Wstrzymanie, aby wstrzymać odmierzanie czasu pracy.
Wznowienie, aby kontynuować śledzenie czasu działania po zawieszeniu usługi Timer.
Ponowne uruchomienie, co spowoduje anulowanie poprzednich pomiarów i rozpoczęcie odliczania usługi Timer od zera.
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
Przed użyciem usługi Timer należy załadować lub zaimportować bibliotekę ScriptForge:
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()
  
    from scriptforge import CreateScriptService
    myTimer = CreateScriptService("Timer", start = True)
    # ...
    myTimer = myTimer.Dispose()
  | 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) | 
Należy pamiętać, że właściwość TotalDuration jest równoważna zsumowaniu właściwości Duration i SuspendDuration.
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 | 
Poniższe przykłady w języku Basic i Python ilustrują użycie metod i właściwości usługi Timer.
    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
  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.
    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))
  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.
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.
    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()
  
    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()