Tartalom

# ScriptForge.Timer service

The Timer service measures the amount of time it takes to run user scripts.

A Timer measures durations. It can be:

- Started, to indicate when to start measuring time.

- 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

## A szolgáltatás igénybevétele

Before using the Timer service the ScriptForge library needs to be loaded or imported:

• Basic macros require to load ScriptForge library using the following statement:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python scripts require an import from scriptforge module:
from scriptforge import CreateScriptService

##### A Basic nyelvben

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

It is recommended to free resources after use:

        Set myTimer = myTimer.Dispose()

##### A Python nyelvben

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

## Tulajdonságok

Név | Írásvédett | Típus | Leírás
--- | --- | --- | ---
Duration | Igen | Double | The actual running time elapsed since start or between start and stop (does not consider suspended time)
IsStarted | Igen | Boolean | True when timer is started or suspended
IsSuspended | Igen | Boolean | True when timer is started and suspended
SuspendDuration | Igen | Double | The actual time elapsed while suspended since start or between start and stop
TotalDuration | Igen | Double | The actual time elapsed since start or between start and stop (including suspensions and running time)

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

## Metódusok

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

If the returned value is False, then nothing happened.

Név | Leírás | Visszatérő érték
--- | --- | ---
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 | Starts a new clean timer | False if the timer is already started
Suspend | Suspends a running timer | False if the timer is not started or already suspended
Terminate | Stops a running timer | False if the timer is neither started nor suspended

### Példa:

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

##### A Basic nyelvben

        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

Ha a Terminate metódust hívja meg, a Continue metódus későbbi hívásai nem folytatják az időmérést. Hasonlóképpen, miután egy időzítő megszűnt, a Start metódus hívása újraindítja azt, mintha egy tiszta új időzítő lenne.

##### A Python nyelvben

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

Be aware that the Wait function in BASIC takes in a duration argument in milliseconds whereas the sleep function in Python uses seconds in its argument.

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

##### A Basic nyelvben

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        ' myTimerA elkezdése
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        ' myTimerB elkezdése
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Mindkét időzítő leállítása
        myTimerA.Terminate()
        myTimerB.Terminate()

##### A Python nyelvben

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

All ScriptForge Basic routines or identifiers that are prefixed with an underscore character "_" are reserved for internal use. They are not meant be used in Basic macros or Python scripts.

Kapcsolódó témakörök

Now Function

Timer Function

Támogasson minket!