Timer.Elapsed Esemény

Definíció

Az időköz elteltekor következik be.

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

Eseménytípus

Attribútumok

Példák

Az alábbi példa létrehoz egy Timer objektumot, amely két másodpercenként (2000 ezredmásodpercenként) aktiválja Timer.Elapsed az eseményt, beállít egy eseménykezelőt az eseményhez, és elindítja az időzítőt. Az eseménykezelő minden alkalommal megjeleníti a ElapsedEventArgs.SignalTime tulajdonság értékét, amikor az elő van emelve.

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

Megjegyzések

Az Elapsed esemény akkor jön létre, ha a Enabled tulajdonság és true a tulajdonság által Interval meghatározott időintervallum (ezredmásodpercben) el nem telik. Ha a AutoReset tulajdonság az true, az esemény a tulajdonság által Interval meghatározott időközönként ismétlődik; ellenkező esetben az esemény csak egyszer lesz előállítva, az első alkalommal, amikor az Interval érték elérték.

Ha Interval az Timer indítás után van beállítva, a darabszám alaphelyzetbe áll. Ha például az intervallumot 5 másodpercre állítja, majd azt állítja be Enabledtrue, akkor a szám a beállított időpontban Enabled kezdődik. Ha 3 másodperces szám esetén 10 másodpercre állítja vissza az időközt, az Elapsed esemény az első alkalommal 13 másodpercre emelkedik a beállítás után Enabledtrue.

Ha a SynchronizingObject tulajdonság , nullaz Elapsed esemény egy ThreadPool szálon lesz emelve. Ha az Elapsed esemény feldolgozása hosszabb ideig Intervaltart, előfordulhat, hogy az esemény ismét egy másik ThreadPool szálon lesz előállítva. Ebben az esetben az eseménykezelőnek újra meg kell jelennie.

Note

Előfordulhat, hogy az eseménykezelési módszer egy szálon fut, amikor egy másik szál meghívja a Stop metódust, vagy beállítja a Enabled tulajdonságot false. Ez azt eredményezheti, hogy az Elapsed esemény az időzítő leállítása után jön létre. A metódus példakódja Stop egy módszert mutat be ennek a versenyfeltételnek a elkerülésére.

Még ha SynchronizingObject nem nullis, Elapsed akkor is előfordulhatnak események a Dispose tulajdonság meghívása vagy Stop a tulajdonság beállítása Enabledutánfalse, mert az Elapsed eseményt hívó jel mindig várólistára kerül a szálkészlet szálon történő végrehajtáshoz. Ennek a versenyfeltételnek a megoldására egy olyan jelölőt kell beállítania, amely arra utasítja az esemény kezelőjének, hogy hagyja figyelmen kívül a Elapsed későbbi eseményeket.

Az Timer összetevő elfogja és letiltja az eseménykezelők által az eseményre vonatkozó összes kivételt Elapsed . Ez a viselkedés a .NET Framework jövőbeli kiadásaiban változhat.

A következőre érvényes:

Lásd még