Freigeben über


Timer.Elapsed-Ereignis

Tritt ein, wenn das Intervall abläuft.

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

Syntax

'Declaration
Public Event Elapsed As ElapsedEventHandler
'Usage
Dim instance As Timer
Dim handler As ElapsedEventHandler

AddHandler instance.Elapsed, handler
public event ElapsedEventHandler Elapsed
public:
event ElapsedEventHandler^ Elapsed {
    void add (ElapsedEventHandler^ value);
    void remove (ElapsedEventHandler^ value);
}
/** @event */
public void add_Elapsed (ElapsedEventHandler value)

/** @event */
public void remove_Elapsed (ElapsedEventHandler value)
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

Hinweise

Wenn Enabled auf true und AutoReset auf false festgelegt ist, löst Timer das Elapsed-Ereignis nur einmal nach dem ersten Ablauf des Intervalls aus.

Wenn Interval nach dem Start von Timer festgelegt wird, erfolgt ein Zurücksetzen des Zählers. Wenn Sie das Intervall z. B. auf 5 Sekunden festlegen und anschließend Enabled auf true festlegen, beginnt der Zählvorgang zu dem Zeitpunkt, zu dem Enabled festgelegt wird. Wenn Sie das Intervall auf 10 Sekunden zurücksetzen, während der Zähler auf 3 Sekunden steht, wird das Elapsed-Ereignis das erste Mal 13 Sekunden nach dem Festlegen von Enabled auf true ausgelöst.

Das Elapsed-Ereignis wird in einem ThreadPool-Thread ausgelöst. Wenn die Verarbeitung des Elapsed-Ereignisses länger als Interval dauert, wird das Ereignis möglicherweise erneut in einem weiteren ThreadPool-Thread ausgelöst. Daher sollte der Ereignishandler wiedereintrittsfähig sein.

Hinweis

Die Ereignisbehandlungsmethode kann in einem Thread ausgeführt werden, wenn zur gleichen Zeit ein anderer Thread die Stop-Methode aufruft oder die Enabled-Eigenschaft auf false festlegt. Dies könnte zur Folge haben, dass das Elapsed-Ereignis ausgelöst wird, nachdem der Zeitgeber angehalten wurde. Im Codebeispiel für die Stop-Methode wird eine Möglichkeit gezeigt, diese Racebedingung zu vermeiden.

Beispiel

Imports System
Imports System.Timers

Public Class Timer1
    
    Public Shared Sub Main()
        ' Normally, the timer is declared at the class level, so
        ' that it doesn't go out of scope when the method ends.
        ' In this example, the timer is needed only while Main 
        ' is executing. However, KeepAlive must be used at the
        ' end of Main, to prevent the JIT compiler from allowing 
        ' aggressive garbage collection to occur before Main 
        ' ends.
        Dim aTimer As New System.Timers.Timer()

        ' Hook up the Elapsed event for the timer.
        AddHandler aTimer.Elapsed, AddressOf 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()

        ' Keep the timer alive until the end of Main.
        GC.KeepAlive(aTimer)
    End Sub
        
    ' Specify what you want to happen when the Elapsed event is 
    ' raised.
    Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)
        Console.WriteLine("Hello World!")
    End Sub
End Class
using System;
using System.Timers;

public class Timer1
{
    public static void Main()
    {
        // Normally, the timer is declared at the class level, so
        // that it doesn't go out of scope when the method ends.
        // In this example, the timer is needed only while Main 
        // is executing. However, KeepAlive must be used at the
        // end of Main, to prevent the JIT compiler from allowing 
        // aggressive garbage collection to occur before Main 
        // ends.
        System.Timers.Timer aTimer = new System.Timers.Timer();

        // 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();

        // Keep the timer alive until the end of Main.
        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("Hello World!");
    }
}
 
#using <system.dll>

using namespace System;
using namespace System::Timers;

public ref class Timer1
{
public:
   static void Demo()
   {
      // Normally, the timer is declared at the class level, so
      // that it doesn't go out of scope when the method ends.
      // In this example, the timer is needed only while Demo
      // is executing. However, KeepAlive must be used at the
      // end of Demo, to prevent the JIT compiler from allowing 
      // aggressive garbage collection to occur before Demo
      // ends.
      System::Timers::Timer^ aTimer = gcnew System::Timers::Timer;

      // Hook up the Elapsed event for the timer.
      aTimer->Elapsed += gcnew ElapsedEventHandler( Timer1::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();

      // Keep the timer alive until the end of the Demo method.
      GC::KeepAlive(aTimer);
   }


private:
   // Specify what you want to happen when the Elapsed event is 
   // raised.
   static void OnTimedEvent( Object^ /*source*/, ElapsedEventArgs^ /*e*/ )
   {
      Console::WriteLine( "Hello World!" );
   }

};

int main()
{
   Timer1::Demo();
}

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

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

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

Timer-Klasse
Timer-Member
System.Timers-Namespace
Timer.Interval-Eigenschaft
Timer.AutoReset-Eigenschaft
Timer.Elapsed-Ereignis
ElapsedEventArgs-Klasse
ElapsedEventHandler-Delegat
Timer.Enabled-Eigenschaft