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;

Tipo de evento

Atributos

Exemplos

O exemplo a seguir cria uma instância de um Timer objeto que dispara seu Timer.Elapsed evento a cada dois segundos (2000 milissegundos), configura um manipulador de eventos para o evento e inicia o temporizador. O manipulador de eventos exibe o valor da ElapsedEventArgs.SignalTime propriedade sempre que ela é gerada.

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

Comentários

O Elapsed evento será gerado 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 será gerado repetidamente em um intervalo definido pela Interval propriedade; caso contrário, o evento será gerado apenas uma vez, na primeira vez que o Interval valor decorrer.

Se Interval for definido após o Timer iniciado, a contagem será redefinida. Por exemplo, se você definir o intervalo como 5 segundos e definir Enabled como true, a contagem será iniciada no momento Enabled em que for definida. Se você redefinir o intervalo para 10 segundos quando a contagem for de 3 segundos, o Elapsed evento será gerado pela primeira vez 13 segundos depois Enabled de ter sido definido truecomo .

Se a SynchronizingObject propriedade for null, o Elapsed evento será gerado em um ThreadPool thread. Se o processamento do Elapsed evento durar mais do que Interval, o evento poderá ser gerado novamente em outro ThreadPool thread. Nessa situação, o manipulador de eventos deve ser reentrante.

Observação

O método de manipulação de eventos pode ser executado em um thread ao mesmo tempo em que outro thread chama o Stop método ou define a Enabled propriedade como false. Isso pode fazer com que o Elapsed evento seja gerado depois que o temporizador for interrompido. O código de exemplo para o Stop método mostra uma maneira de evitar essa condição de corrida.

Mesmo se SynchronizingObject não nullfor , Elapsed os eventos poderão ocorrer depois que o Dispose método ou Stop tiver sido chamado ou depois que a Enabled propriedade tiver sido definida falsecomo , porque o sinal para acionar o Elapsed evento sempre será enfileirado para execução em um thread do pool de threads. Uma maneira de resolve essa condição de corrida é definir um sinalizador que informa ao manipulador de eventos para que o Elapsed evento ignore os eventos subsequentes.

O Timer componente captura e suprime todas as exceções geradas por manipuladores de eventos para o Elapsed evento. Esse comportamento está sujeito a alterações em versões futuras do .NET Framework.

Aplica-se a

Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Confira também