Lire en anglais

Partager via


ElapsedEventArgs.SignalTime Propriété

Définition

Obtient la date et l’heure auxquelles l’événement Elapsed a été déclenché.

C#
public DateTime SignalTime { get; }

Valeur de propriété

Heure à laquelle l'événement Elapsed a été déclenché.

Exemples

L’exemple suivant instancie un Timer objet qui déclenche son Timer.Elapsed événement toutes les deux secondes (2 000 millisecondes), configure un gestionnaire d’événements pour l’événement et démarre le minuteur. Le gestionnaire d’événements affiche la valeur de la ElapsedEventArgs.SignalTime propriété chaque fois qu’elle est déclenchée.

C#
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

Remarques

L’événement Timer.Elapsed étant déclenché sur un ThreadPool thread, la méthode de gestion des événements peut s’exécuter sur un thread en même temps qu’un appel à la Timer.Stop méthode s’exécute sur un autre thread. Cela peut entraîner la levée de l’événement Elapsed après l’appel de la Stop méthode. Cette condition de course ne peut pas être évitée simplement en comparant la SignalTime propriété avec l’heure à laquelle la Stop méthode est appelée, car la méthode de gestion des événements peut déjà s’exécuter lorsque la Stop méthode est appelée, ou peut commencer à s’exécuter entre le moment où la Stop méthode est appelée et le moment où l’heure d’arrêt est enregistrée. S’il est essentiel d’empêcher le thread qui appelle la Stop méthode de continuer pendant que la méthode de gestion des événements est toujours en cours d’exécution, utilisez un mécanisme de synchronisation plus robuste tel que la Monitor classe ou la CompareExchange méthode. Le code qui utilise la CompareExchange méthode se trouve dans l’exemple de la Timer.Stop méthode.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.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

Voir aussi