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


Invocazione del servizio

Prima di usare il servizio Timer è necessario caricare o importare le librerie ScriptForge:

note

• Le macro in Basic richiedono il caricamento della libreria ScriptForge usando la seguente istruzione:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Gli script in Python richiedono un'importazione dal modulo scriptforge:
from scriptforge import CreateScriptService


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)
'Il contatore parte immediatamente se il secondo argomento = True, predefinito = 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

Fare attenzione che la proprietà TotalDuration equivale alla somma delle proprietà Duration e SuspendDuration.


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:

Gli esempi seguenti in Basic e Python illustrano l'uso dei metodi e delle proprietà del servizio Timer.

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

È bene notare che la funzione Wait in BASIC richiede l'argomento per la durata espresso in millisecondi, mentre la funzione sleep in Python usa i secondi per il suo argomento.


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

Tutte le routine e gli identificatori Basic di ScriptForge che iniziano con un carattere di sottolineatura "_" sono riservati per uso interno. Non è previsto il loro utilizzo nelle macro in Basic o negli script in Python.


Sosteneteci!