Inhalte

# Dienst ScriptForge.Timer

Der Dienst Timer misst die Zeit, die zum Ausführen von Benutzerskripten benötigt wird.

Timer misst die Dauer. Es kann sein:

- Gestartet, um anzugeben, wann die Zeitmessung beginnen soll.

- Angehalten, um die Messung der Laufzeit zu unterbrechen.

- Fortgesetzt, um die Laufzeit fortzusetzen, nachdem der Timer ausgesetzt wurde.

- Neu gestartet, wodurch frühere Messungen abgebrochen und der Timer bei Null gestartet wird.

Die Dauer wird in Sekunden mit einer Genauigkeit von 3 Dezimalstellen (Millisekunden) ausgedrückt. Ein Wert von 12,345 bedeutet 12 Sekunden und 345 Millisekunden

## Dienstaufruf

Vor der Verwendung des Dienstes Timer muss die Bibliothek ScriptForge geladen oder importiert werden:

• Grundlegende Makros erfordern das Laden der Bibliothek ScriptForge mit der folgenden Anweisung:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-Skripte erfordern einen Import aus dem Modul scriptforge:
from scriptforge import CreateScriptService

##### In Basic

Das folgende Beispiel erstellt ein Objekt Timer namens myTimer und startet es sofort.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        ' Der Timer startet sofort, wenn das zweite Argument "True" ist, Standard = False

Es wird empfohlen, Ressourcen nach der Verwendung freizugeben:

        Set myTimer = myTimer.Dispose()

##### In Python

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

## Eigenschaften

Name | Schreibgeschützt | Typ | Beschreibung
--- | --- | --- | ---
Duration | Ja | Double | Die tatsächliche Laufzeit, die seit dem Start oder zwischen Start und Stopp verstrichen ist (unterbrochene Zeit wird nicht berücksichtigt)
IsStarted | Ja | Boolean | True, wenn der Timer gestartet oder angehalten wird
IsSuspended | Ja | Boolean | True wenn der Timer gestartet und angehalten wird
SuspendDuration | Ja | Double | Die tatsächlich verstrichene Zeit während der Unterbrechung, seit dem Start oder zwischen Start und Stopp
TotalDuration | Ja | Double | Die tatsächlich verstrichene Zeit seit dem Start oder zwischen Start und Stopp (einschließlich Unterbrechungen und Laufzeit)

Beachten Sie, dass die Eigenschaft TotalDuration der Summierung der Eigenschaften Duration und SuspendDuration entspricht.

## Methoden

Alle Methoden benötigen keine Argumente und geben einen booleschen Wert zurück.

Wenn der zurückgegebene Wert False ist, ist nichts passiert.

Name | Beschreibung | Zurückgegebener Wert
--- | --- | ---
Continue | Setzt den Timer fort, wenn er angehalten wurde | False, wenn der Timer nicht angehalten wurde
Restart | Beendet den Timer, verwirft seine aktuellen Eigenschaftswerte und startet als neuer Timer neu | False wenn der Timer inaktiv ist
Start | Startet einen neuen Timer | False wenn der Timer bereits gestartet ist
Suspend | Unterbricht einen laufenden Timer | False, wenn der Timer nicht gestartet oder bereits angehalten wurde
Terminate | Stoppt einen laufenden Timer | False wenn der Timer weder gestartet noch angehalten ist

### Beispiel:

Die folgenden Beispiele in Basic und Python veranschaulichen die Verwendung der Methoden und Eigenschaften im Dienst Timer.

##### In Basic

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        ' Die verstrichene Zeit, während der Dialog geöffnet war, wird als unterbrochene Zeit gezählt
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        ' Die verstrichene Zeit, während der Dialog geöffnet war, wird als Laufzeit gezählt
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        ' Zeigt die letzten Zeitmessungen
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Wenn Sie die Methode Terminate aufrufen, setzen nachfolgende Aufrufe der Methode Continue die Zeitmessung nicht fort. In ähnlicher Weise wird ein Timer, nachdem er beendet wurde, durch Aufrufen der Methode Start neu gestartet, als wäre er ein neuer Timer.

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

Beachten Sie, dass die Funktion Wait in BASIC ein Dauerargument in Millisekunden akzeptiert, während die Funktion sleep in Python Sekunden in ihrem Argument verwendet.

## Arbeiten mit mehreren Timern

Es ist möglich, mehrere Dienste Timer parallel zu instanziieren, wodurch die Zeit in verschiedenen Teilen des Codes flexibel gemessen werden kann.

Das folgende Beispiel veranschaulicht, wie zwei Objekte Timer erstellt und separat gestartet werden.

##### In Basic

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        ' Startet myTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        ' Startet myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        ' Beenden Sie beide Timer
        myTimerA.Terminate()
        myTimerB.Terminate()

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

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.

Verwandte Themen

Funktion Now

Funktion Timer