Timer.Elapsed Evento
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Ocorre quando o intervalo termina.
public:
event System::Timers::ElapsedEventHandler ^ Elapsed;
[System.Timers.TimersDescription("TimerIntervalElapsed")]
public event System.Timers.ElapsedEventHandler Elapsed;
[<System.Timers.TimersDescription("TimerIntervalElapsed")>]
member this.Elapsed : System.Timers.ElapsedEventHandler
Public Custom Event Elapsed As ElapsedEventHandler
Tipo de Evento
- Atributos
Exemplos
O exemplo seguinte instancia um Timer objeto que dispara o seu Timer.Elapsed evento a cada dois segundos (2000 milissegundos), cria um manipulador de eventos para o evento e inicia o temporizador. O gestor de eventos mostra o valor da ElapsedEventArgs.SignalTime propriedade cada vez que esta é elevada.
using System;
using System.Timers;
public class Example
{
private static Timer aTimer;
public static void Main()
{
// Create a timer and set a two second interval.
aTimer = new System.Timers.Timer();
aTimer.Interval = 2000;
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += OnTimedEvent;
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset = true;
// Start the timer
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program at any time... ");
Console.ReadLine();
}
private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
}
}
// The example displays output like the following:
// Press the Enter key to exit the program at any time...
// The Elapsed event was raised at 5/20/2015 8:48:58 PM
// The Elapsed event was raised at 5/20/2015 8:49:00 PM
// The Elapsed event was raised at 5/20/2015 8:49:02 PM
// The Elapsed event was raised at 5/20/2015 8:49:04 PM
// The Elapsed event was raised at 5/20/2015 8:49:06 PM
open System.Timers
let onTimedEvent source (e: ElapsedEventArgs) =
printfn $"The Elapsed event was raised at {e.SignalTime}"
// Create a timer and set a two second interval.
let aTimer = new Timer()
aTimer.Interval <- 2000
// Hook up the Elapsed event for the timer.
aTimer.Elapsed.AddHandler onTimedEvent
// Have the timer fire repeated events (true is the default)
aTimer.AutoReset <- true
// Start the timer
aTimer.Enabled <- true
printfn "Press the Enter key to exit the program at any time... "
stdin.ReadLine() |> ignore
// The example displays output like the following:
// Press the Enter key to exit the program at any time...
// The Elapsed event was raised at 5/20/2015 8:48:58 PM
// The Elapsed event was raised at 5/20/2015 8:49:00 PM
// The Elapsed event was raised at 5/20/2015 8:49:02 PM
// The Elapsed event was raised at 5/20/2015 8:49:04 PM
// The Elapsed event was raised at 5/20/2015 8:49:06 PM
Imports System.Timers
Public Module Example
Private aTimer As Timer
Public Sub Main()
' Create a timer and set a two second interval.
aTimer = New System.Timers.Timer()
aTimer.Interval = 2000
' Hook up the Elapsed event for the timer.
AddHandler aTimer.Elapsed, AddressOf OnTimedEvent
' Have the timer fire repeated events (true is the default)
aTimer.AutoReset = True
' Start the timer
aTimer.Enabled = True
Console.WriteLine("Press the Enter key to exit the program at any time... ")
Console.ReadLine()
End Sub
Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime)
End Sub
End Module
' The example displays output like the following:
' Press the Enter key to exit the program at any time...
' The Elapsed event was raised at 5/20/2015 8:48:58 PM
' The Elapsed event was raised at 5/20/2015 8:49:00 PM
' The Elapsed event was raised at 5/20/2015 8:49:02 PM
' The Elapsed event was raised at 5/20/2015 8:49:04 PM
' The Elapsed event was raised at 5/20/2015 8:49:06 PM
Observações
O Elapsed evento é elevado se a Enabled propriedade for true e o intervalo de tempo (em milissegundos) definido pela Interval propriedade decorrer. Se a AutoReset propriedade for true, o evento é levantado repetidamente num intervalo definido pela Interval propriedade; caso contrário, o evento é levantado apenas uma vez, na primeira vez que o Interval valor expira.
Se Interval for definido depois de ter Timer começado, a contagem é reiniciada. Por exemplo, se definir o intervalo para 5 segundos e depois para Enabledtrue, a contagem começa quando o tempo Enabled é definido. Se reiniciar o intervalo para 10 segundos quando a contagem é de 3 segundos, o Elapsed evento é elevado pela primeira vez 13 segundos depois Enabled de ter sido definido para true.
Se a SynchronizingObject propriedade for null, o Elapsed evento é levantado num ThreadPool fio. Se o processamento do Elapsed evento durar mais do que Interval, o evento pode ser novamente levantado noutro ThreadPool tópico. Nesta situação, o responsável pelo evento deve ser reentrante.
Note
O método de gestão de eventos pode correr numa thread ao mesmo tempo que outra thread chama o Stop método ou define a Enabled propriedade para false. Isto pode fazer com que o Elapsed evento seja ativado depois de o temporizador ser parado. O código de exemplo para o Stop método mostra uma forma de evitar esta condição de corrida.
Mesmo que SynchronizingObject não seja , Elapsed eventos podem ocorrer depois de o Dispose método ou Stop ter sido chamado ou depois de a Enabled propriedade ter sido definida para false, porque o sinal para levantar o Elapsed evento está sempre na fila para execução num thread pool nullde threads. Uma forma de resolver esta condição de corrida é definir uma bandeira que indique ao responsável Elapsed pelo evento para ignorar os eventos seguintes.
O Timer componente apanha e suprime todas as exceções lançadas pelos gestores de eventos para o Elapsed evento. Este comportamento está sujeito a alterações em futuras versões do .NET Framework.