Serviço ScriptForge.Timer

O serviço Timer mede o tempo para executar scripts de usuário.

Um Timer mede durações. Ele pode ser:

Ícone Dica

Durações são expressas em segundos com uma precisão de 3 casas decimais (milissegundos). Um valor de duração igual a 12.345 significa 12 segundos e 345 milissegundos.


Invocação do serviço

Antes de usar o serviço Timer a biblioteca ScriptForge precisa ser carregada usando:


    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
  

O exemplo abaixo cria um objeto Timer com o nome myTimer e o inicia imediatamente.


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

É recomendado liberar recursos após o uso:


    Set myTimer = myTimer.Dispose()
  
note

Este serviço é totalmente compatível com as linguagens Basic e Python. Todos os exemplos são descritos usando a linguagem de programação Basic e podem ser facilmente convertidos para Python.


Propriedades

Nome

Somente leitura

Tipo

Descrição

Duration

Sim

Double

Tempo atual de execução que se passou desde o início ou entre o início e a pausa (não considera os tempos em suspensão)

IsStarted

Sim

Boolean

True quanto o Timer estiver iniciado ou suspenso

IsSuspended

Sim

Boolean

True quanto o Timer estiver iniciado e suspenso

SuspendDuration

Sim

Double

Tempo que se passou com o Timer em suspensão desde o início ou entre o início e pausa.

TotalDuration

Sim

Double

Tempo que se passou desde o início ou entre início e pausa (incluindo tempo em suspensão e em execução)


Ícone Dica

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


Métodos

Nenhum dos métodos deste serviço requerem argumentos e retorna um valor Boolean.

Se o valor retornado for False, então nada aconteceu.

Nome

Descrição

Valor de retorno

Continue

Retoma o Timer se este estiver suspenso.

False se o Timer não estiver suspenso

Restart

Encerra o Timer e descarta os valores de sua propriedade, reiniciando com um novo Timer zerado.

False se o Timer estiver inativo

Start

Inicia um novo Timer

False se o Timer já tiver iniciado

Suspend

Suspende o Timer em execução

False se o Timer não tiver iniciado ou se estiver suspenso

Terminate

Para o Timer em execução

False se o Timer não tiver iniciado nem suspenso.


Exemplo:


      myTimer.Start()
      Wait 500
      myTimer.Suspend()
      'O tempo que se passou enquanto a caixa de diálogo esteve aberta será contado como tempo em suspensão
      MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
      myTimer.Continue()
      Wait 500
      'O tempo que se passou enquanto a caixa de diálogo esteve aberta será contado como tempo em execução
      MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
      myTimer.Terminate()
      'Mostra as medições de tempo finais
      MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
    
note

Se você chamar o método Terminate, chamadas subsequentes do método Continue não retomarão a medição de tempo. De forma similar, após um Timer ser concluído, chamar o método Start irá reiniciá-lo como se fosse um novo Timer.


Trabalhando com Timers Múltiplos

É possível instanciar múltiplas instâncias do serviço Timer em paralelo, o que dá flexibilidade na medição de tempo em diferentes partes do código.

O exemplo a seguir ilustra como criar dois objetos Timer e iniciá-los separadamente.


    Dim myTimerA as Variant, myTimerB as Variant
    myTimerA = CreateScriptService("Timer")
    myTimerB = CreateScriptService("Timer")
    'Inicia myTimerA
    myTimerA.Start()
    Wait 1000 'Wait 1 second (1,000 milliseconds)
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Inicia myTimerB
    myTimerB.Start()
    Wait 1000
    MsgBox myTimerA.Duration & " " & myTimerB.Duration
    'Conclui ambos os Timers
    myTimerA.Terminate()
    myTimerB.Terminate()
  
warning

Todas as rotinas básicas ou identificadores do ScriptForge que possuem o caractere "_" como prefixo são reservados apenas para uso interno. Elas não devem ser usadas em macros Basic.


♥ Doe para nosso projeto! ♥