ScriptForge.Timer service

El servicio Timer mide el intervalo de tiempo necesario para ejecutar secuencias de órdenes de usuario.

A Timer measures durations. It can be:

Icono de consejo

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


Invocación del servicio

Antes de utilizar el servicio Timer, es necesario cargar o importar la biblioteca ScriptForge:

note

• Para cargar la biblioteca ScriptForge que necesitan las macros de Basic se debe usar la siguiente declaración:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")

• Los scripts de Python necesitan importar el módulo scriptforge:
from scriptforge import CreateScriptService


En BASIC

The example below creates a Timer object named myTimer and starts it immediately.

GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim myTimer As Variant
myTimer = CreateScriptService("Timer", True)
'The timer starts immediately when the second argument = True, default = False

Es recomendable liberar recursos después del uso:

Set myTimer = myTimer.Dispose()
En Python
from scriptforge import CreateScriptService
myTimer = CreateScriptService("Timer", start = True)
# ...
myTimer = myTimer.Dispose()

Propiedades

Nombre

De solo lectura

Tipo

Descripción

Duration

Double

The actual running time elapsed since start or between start and stop (does not consider suspended time)

IsStarted

Boolean

True when timer is started or suspended

IsSuspended

Boolean

True when timer is started and suspended

SuspendDuration

Double

The actual time elapsed while suspended since start or between start and stop

TotalDuration

Double

The actual time elapsed since start or between start and stop (including suspensions and running time)


Icono de consejo

Note that the TotalDuration property is equivalent to summing the Duration and SuspendDuration properties.


Métodos

All methods do not require arguments and return a Boolean value.

If the returned value is False, then nothing happened.

Nombre

Descripción

Valor devuelto

Continue

Resumes the Timer if it has been suspended

False if the timer is not suspended

Restart

Terminates the Timer and discards its current property values, restarting as a new clean Timer

False if the timer is inactive

Start

Inicia un temporizador nuevo

False if the timer is already started

Suspend

Suspende un temporizador en ejecución

False if the timer is not started or already suspended

Terminate

Detiene un temporizador en ejecución

False if the timer is neither started nor suspended


Ejemplo:

The examples below in Basic and Python illustrate the use of the methods and properties in the Timer service.

En BASIC
myTimer.Start()
Wait 500
myTimer.Suspend()
'The time elapsed while the Dialog box is open will be counted as suspended time
MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
myTimer.Continue()
Wait 500
'The time elapsed while the Dialog box is open will be counted as running time
MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
myTimer.Terminate()
'Shows the final time measurements
MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
note

If you call the Terminate method, subsequent calls for the Continue method will not resume time measurement. Similarly, after a Timer has been terminated, calling the Start method will restart it as if it were a clean new Timer.


En 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

Debe saber que la función Wait de BASIC recibe argumentos de duración en milisegundos, a diferencia de la función sleep de Python, que utiliza segundos en su argumento.


Working with Multiple Timers

It is possible to instantiate multiple Timer services in parallel, which gives flexibility in measuring time in different parts of the code.

The following example illustrates how to create two Timer objects and start them separately.

En BASIC
Dim myTimerA as Variant, myTimerB as Variant
myTimerA = CreateScriptService("Timer")
myTimerB = CreateScriptService("Timer")
'Starts myTimerA
myTimerA.Start()
Wait 1000 'Wait 1 second (1,000 milliseconds)
MsgBox myTimerA.Duration & " " & myTimerB.Duration
'Starts myTimerB
myTimerB.Start()
Wait 1000
MsgBox myTimerA.Duration & " " & myTimerB.Duration
'Terminate both timers
myTimerA.Terminate()
myTimerB.Terminate()
En 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

Todas las rutinas o identificadores BASIC de ScriptForge precedidas por guion bajo «_» están reservadas para uso interno. No deben utilizarse en macros BASIC o secuencias Python.


¡Necesitamos su ayuda!