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

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

Sì

Double

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

IsStarted

Sì

Boolean

True quando il timer è avviato o sospeso

IsSuspended

Sì

Boolean

True quando il timer è avviato e sospeso

SuspendDuration

Sì

Double

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

TotalDuration

Sì

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

Fate attenzione 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!