Timer.Elapsed Evento

Definição

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.

Aplica-se a

Ver também