ElapsedEventArgs.SignalTime Propriedade

Definição

Obtém a data/hora quando o Elapsed evento foi gerado.

public DateTime SignalTime { get; }

Valor da propriedade

A hora que o Elapsed evento foi gerado.

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 Timer.Elapsed evento é gerado em um ThreadPool thread, portanto, o método de manipulação de eventos pode ser executado em um thread ao mesmo tempo em que uma chamada para o Timer.Stop método é executada em outro thread. Isso pode resultar na geração do Elapsed evento depois que o Stop método é chamado. Essa condição de corrida não pode ser evitada simplesmente comparando a SignalTime propriedade com a hora em que o Stop método é chamado, porque o método de manipulação de eventos pode já estar em execução quando o Stop método é chamado ou pode começar a ser executado entre o momento em que o Stop método é chamado e o momento em que o tempo de parada é salvo. Se for essencial impedir que o thread que chama o Stop método continue enquanto o método de manipulação de eventos ainda estiver em execução, use um mecanismo de sincronização mais robusto, como a Monitor classe ou o CompareExchange método . O código que usa o CompareExchange método pode ser encontrado no exemplo do Timer.Stop método .

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