Timer.Elapsed Gebeurtenis

Definitie

Treedt op wanneer het interval is verstreken.

public:
 event System::Timers::ElapsedEventHandler ^ Elapsed;
[System.Timers.TimersDescription("TimerIntervalElapsed")]
public event System.Timers.ElapsedEventHandler Elapsed;
[<System.Timers.TimersDescription("TimerIntervalElapsed")>]
member this.Elapsed : System.Timers.ElapsedEventHandler 
Public Custom Event Elapsed As ElapsedEventHandler 

Gebeurtenistype

Kenmerken

Voorbeelden

In het volgende voorbeeld wordt een Timer object geïnstitueerd dat Timer.Elapsed de gebeurtenis om de twee seconden (2000 milliseconden) wordt geactiveerd, een gebeurtenis-handler voor de gebeurtenis wordt ingesteld en de timer wordt gestart. De gebeurtenis-handler geeft de waarde van de ElapsedEventArgs.SignalTime eigenschap weer telkens wanneer deze wordt gegenereerd.

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
open System.Timers

let onTimedEvent source (e: ElapsedEventArgs) =
    printfn $"The Elapsed event was raised at {e.SignalTime}"

// Create a timer and set a two second interval.
let aTimer = new Timer()
aTimer.Interval <- 2000

// Hook up the Elapsed event for the timer. 
aTimer.Elapsed.AddHandler onTimedEvent

// Have the timer fire repeated events (true is the default)
aTimer.AutoReset <- true

// Start the timer
aTimer.Enabled <- true

printfn "Press the Enter key to exit the program at any time... "
stdin.ReadLine() |> ignore

// 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
Imports System.Timers

Public Module Example
    Private aTimer As Timer

    Public Sub 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.  
        AddHandler aTimer.Elapsed, AddressOf 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()
    End Sub

    Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime)
    End Sub
End Module
' 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

Opmerkingen

De Elapsed gebeurtenis wordt gegenereerd als de Enabled eigenschap is true en het tijdsinterval (in milliseconden) dat is gedefinieerd door de Interval eigenschap is verstreken. Als de AutoReset eigenschap is true, wordt de gebeurtenis herhaaldelijk gegenereerd met een interval dat door de Interval eigenschap is gedefinieerd. Anders wordt de gebeurtenis slechts één keer gegenereerd, de eerste keer dat de Interval waarde is verstreken.

Als Interval dit is ingesteld nadat de Timer telling is gestart, wordt het aantal opnieuw ingesteld. Als u bijvoorbeeld het interval instelt op 5 seconden en vervolgens instelt Enabledtrueop , begint het aantal op het moment dat het is Enabled ingesteld. Als u het interval opnieuw instelt op 10 seconden wanneer het aantal 3 seconden is, wordt de Elapsed gebeurtenis verhoogd voor de eerste keer 13 seconden nadat Enabled deze is ingesteld op true.

Als de SynchronizingObject eigenschap is null, wordt de Elapsed gebeurtenis gegenereerd op een ThreadPool thread. Als de verwerking van de Elapsed gebeurtenis langer duurt dan Interval, kan de gebeurtenis opnieuw worden gegenereerd op een andere ThreadPool thread. In deze situatie moet de gebeurtenis-handler opnieuw worden ingetekend.

Note

De methode voor gebeurtenisafhandeling kan tegelijkertijd op één thread worden uitgevoerd wanneer een andere thread de Stop methode aanroept of de Enabled eigenschap instelt op false. Dit kan ertoe leiden dat de Elapsed gebeurtenis wordt gegenereerd nadat de timer is gestopt. In de voorbeeldcode voor de Stop methode ziet u één manier om deze racevoorwaarde te voorkomen.

Zelfs als SynchronizingObject dat niet nullhet geval is, Elapsed kunnen gebeurtenissen optreden nadat de Dispose of Stop methode is aangeroepen of nadat de Enabled eigenschap is ingesteld falseop , omdat het signaal voor het genereren van de gebeurtenis altijd in de Elapsed wachtrij wordt geplaatst voor uitvoering op een threadpoolthread. Een manier om deze racevoorwaarde op te lossen, is door een vlag in te stellen waarmee de gebeurtenis-handler voor de Elapsed gebeurtenis de volgende gebeurtenissen negeert.

Het Timer onderdeel onderschept en onderdrukt alle uitzonderingen die worden gegenereerd door gebeurtenis-handlers voor de Elapsed gebeurtenis. Dit gedrag is onderhevig aan wijzigingen in toekomstige releases van .NET Framework.

Van toepassing op

Zie ook