(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ElapsedEventArgs.SignalTime-Eigenschaft

Ruft die Zeit ab, zu der das Timer.Elapsed-Ereignis ausgelöst wurde.

Namespace:  System.Timers
Assembly:  System (in System.dll)

public DateTime SignalTime { get; }

Eigenschaftswert

Typ: System.DateTime
Die Zeit, zu der das Elapsed-Ereignis ausgelöst wurde.

Das Timer.Elapsed-Ereignis wird in einem ThreadPool-Thread ausgelöst. Deshalb kann die Ereignisbehandlungsmethode in einem Thread ausgeführt werden, während ein Aufruf an die Timer.Stop-Methode in einem anderen Thread ausgeführt wird. Dadurch kann das Elapsed-Ereignis nach dem Aufruf der Stop-Methode ausgelöst werden. Diese Racebedingung kann nicht einfach durch den Vergleich der SignalTime-Eigenschaft mit dem Zeitpunkt, zu dem die Stop-Methode aufgerufen wird, verhindert werden, da die Ereignisbehandlungsmethode möglicherweise schon ausgeführt wird, wenn die Stop-Methode aufgerufen wird. Außerdem kann es sein, dass die Ausführung zwischen dem Zeitpunkt beginnnt, zu dem die Stop-Methode aufgerufen wird und dem Zeitpunkt, zu dem die Beendigungszeit gespeichert wird. Wenn es wichtig ist, den Thread, der die Stop-Methode aufruft, anzuhalten, während die Ereignisbehandlungsmethode noch ausgeführt wird, muss ein robusterer Synchronisierungsmechanismus verwendet werden, beispielsweise die Monitor-Klasse oder die CompareExchange-Methode. Code, der die CompareExchange-Methode verwendet, ist im Beispiel für die Timer.Stop-Methode zu finden.

Im folgenden Codebeispiel wird ein Ereignishandler für das Timer.Elapsed-Ereignis eingerichtet; außerdem wird ein Zeitgeber erstellt, und der Zeitgeber wird gestartet. Die SignalTime-Eigenschaft wird vom Ereignishandler bei jedem Auslösen des Ereignisses angezeigt.


using System;
using System.Timers;

public class Timer1
{
    private static System.Timers.Timer aTimer;

    public static void Main()
    {
        // Normally, the timer is declared at the class level,
        // so that it stays in scope as long as it is needed.
        // If the timer is declared in a long-running method,  
        // KeepAlive must be used to prevent the JIT compiler 
        // from allowing aggressive garbage collection to occur 
        // before the method ends. You can experiment with this
        // by commenting out the class-level declaration and 
        // uncommenting the declaration below; then uncomment
        // the GC.KeepAlive(aTimer) at the end of the method.
        //System.Timers.Timer aTimer;

        // Create a timer with a ten second interval.
        aTimer = new System.Timers.Timer(10000);

        // Hook up the Elapsed event for the timer.
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

        // Set the Interval to 2 seconds (2000 milliseconds).
        aTimer.Interval = 2000;
        aTimer.Enabled = true;

        Console.WriteLine("Press the Enter key to exit the program.");
        Console.ReadLine();

        // If the timer is declared in a long-running method, use
        // KeepAlive to prevent garbage collection from occurring
        // before the method ends.
        //GC.KeepAlive(aTimer);
    }

    // Specify what you want to happen when the Elapsed event is 
    // raised.
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
    }
}

/* This code example produces output similar to the following:

Press the Enter key to exit the program.
The Elapsed event was raised at 5/20/2007 8:42:27 PM
The Elapsed event was raised at 5/20/2007 8:42:29 PM
The Elapsed event was raised at 5/20/2007 8:42:31 PM
...
 */


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft