Contenuto
Indice 🔎︎

# Servizio ScriptForge.Timer

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.

- Suspended, to pause measuring running time.

- Resumed, to continue tracking running time after the Timer has been suspended.

- Restarted, which will cancel previous measurements and start the Timer at zero.

Durations are expressed in seconds with a precision of 3 decimal digits (milliseconds). A duration value of 12.345 means 12 seconds and 345 milliseconds

## Invocare il servizio

Prima di usare il servizio Timer la libreria ScriptForge deve essere caricata utilizzando:

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")

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

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

Questo servizio è pienamente supportato sia in Basic, sia in Python. Tutti gli esempi sono espressi nel linguaggio di programmazione Basic e possono essere facilmente convertiti in Python.

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

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:

          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.

## 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.

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

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.

Argomenti correlati

Funzione Now

Funzione Timer