Abilitare JavaScript nel browser per visualizzare le pagine della Guida di LibreOfficeDev.

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.