Servizio ScriptForge.Timer

Il servizio Timer misura il tempo impiegato per eseguire gli script dell'utente.

Un Timer misura le durate. Può essere:

Icona di suggerimento

Le durate sono espresse in secondi con una precisione di tre 3 cifre decimali (millisecondi). Una durata di valore 12.345 indica 12 secondi e 345 millisecondi


Invocare il servizio

In Basic

L'esempio sottostante crea un oggetto Timer denominato myTimer e lo fa partire immediatamente.


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim myTimer As Variant
    myTimer = CreateScriptService("Timer", True)
    'The timer starts immediately when the second argument = True, default = False
  

Si raccomanda di liberare le risorse dopo l'uso:


    Set myTimer = myTimer.Dispose()
  
In Python

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

Proprietà

Nome

Sola lettura

Tipo

Descrizione

Duration

Double

Il tempo di esecuzione attuale trascorso dall'avvio o tra l'avvio e l'arresto (senza considerare il tempo delle sospensioni)

IsStarted

Boolean

True quando il timer è avviato o sospeso

IsSuspended

Boolean

True quando il timer è avviato e sospeso

SuspendDuration

Double

Il tempo effettivamente trascorso in fase di sospensione dall'avvio o tra l'avvio e l'arresto

TotalDuration

Double

Il tempo effettivamente trascorso dall'avvio o tra l'avvio e l'arresto (comprese le sospensioni e il tempo di esecuzione)


Icona di suggerimento

Note that the TotalDuration property is equivalent to summing the Duration and SuspendDuration properties.


Metodi

Tutti i metodi non richiedono argomento e restituiscono un valore di tipo Boolean.

Se il valore restituito è False, allora non è accaduto nulla.

Nome

Descrizione

Valore restituito

Continue

Riprende il Timer se era stato sospeso

False se il timer non è sospeso

Restart

Termina il Timer ed elimina i valori correnti delle sue proprietà, riavviando un nuovo Timer pulito

False se il timer è inattivo

Start

Avvia un nuovo timer pulito

False se il timer è già avviato

Suspend

Sospende un timer in esecuzione

False se il timer non è avviato o è già sospeso

Terminate

Arresta un timer in esecuzione

False se il timer non è nè avviato nè sospeso


Esempio:

The examples below in Basic and Python illustrate the use of the methods and properties in the Timer service.

In Basic

    myTimer.Start()
    Wait 500
    myTimer.Suspend()
    'Il tempo trascorso mentre il riquadro di dialogo è aperto viene conteggiato come tempo di sospensione
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Continue()
    Wait 500
    'Il tempo trascorso mentre il riquadro di dialogo è aperto viene conteggiato come tempo di esecuzione
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    myTimer.Terminate()
    'Mostra il conteggio del tempo finale
    MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
  
note

Se chiamate il metodo Terminate, le successive chiamate al metodo Continue non faranno riprendere il conteggio del tempo. In modo simile, dopo che un Timer è stato terminato, le chiamate al metodo Start lo riavvieranno come se si trattasse di un nuovo Timer pulito.


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

Beware that the Wait function in Basic takes in a duration argument in milliseconds whereas the sleep function in Python uses seconds in its argument.


Lavorare con Timer multipli

È possibile istanziare più servizi Timer in parallelo, che forniscono flessibilità nella misurazione del tempo in differenti parti del codice.

L'esempio seguente illustra come creare e avviare separatamente due oggetti Timer.

In Basic

    Dim myTimerA as Variant, myTimerB as Variant
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    'Avvia myTimerA
    myTimerA.Start()
    Wait 1000 'Wait 1 second (1,000 milliseconds)
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Avvia myTimerB
    myTimerB.Start()
    Wait 1000
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Termina entrambi i 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()
  
warning

All ScriptForge Basic routines or identifiers that are prefixed with an underscore character "_" are reserved for internal use. They are not meant be used in Basic macros or Python scripts.