Guida di LibreOffice 25.2
Il servizio Timer misura il tempo impiegato per eseguire gli script dell'utente.
Un Timer misura le durate. Può essere:
Avviato, per indicare quando iniziare la misurazione del tempo.
Sospeso, per mettere in pausa la misurazione del tempo di esecuzione.
Riavviato, per continuare a tracciare il tempo di esecuzione dopo che il Timer è stato sospeso.
Ripristinato, per cancellare le misurazioni precedenti e far ripartire il Timer da zero.
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
Prima di usare il servizio Timer è necessario caricare o importare le librerie ScriptForge:
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()
  
    from scriptforge import CreateScriptService
    myTimer = CreateScriptService("Timer", start = True)
    # ...
    myTimer = myTimer.Dispose()
  | 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) | 
Fare attenzione che la proprietà TotalDuration equivale alla somma delle proprietà Duration e SuspendDuration.
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 | 
Gli esempi seguenti in Basic e Python illustrano l'uso dei metodi e delle proprietà del servizio Timer.
    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
  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.
    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))
  È 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.
È 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.
    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()
  
    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()