Timer.Elapsed Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane, když interval uplynou.
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
Event Type
- Atributy
Příklady
Následující příklad vytvoří instanci objektu Timer , který aktivuje událost Timer.Elapsed každých dva sekundy (2000 milisekund), nastaví obslužnou rutinu události pro událost a spustí časovač. Obslužná rutina události zobrazí hodnotu ElapsedEventArgs.SignalTime vlastnosti při každém vyvolání.
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
Poznámky
Událost Elapsed je vyvolána, pokud Enabled je true vlastnost a časový interval (v milisekundách) definovaný vlastností Interval uplynul.
AutoReset Pokud je truevlastnost , událost je vyvolána opakovaně v intervalu definovaném Interval vlastností; v opačném případě je událost vyvolána pouze jednou, při Interval prvním uplynutí hodnoty.
Pokud Interval je nastavená po Timer spuštění, počet se resetuje. Pokud například nastavíte interval na 5 sekund a nastavíte Enabled ho na truehodnotu , nastaví se počet, který začíná v čase Enabled . Pokud interval resetujete na 10 sekund, pokud je počet 3 sekundy, Elapsed událost se vyvolá poprvé 13 sekund po Enabled nastavení .true
Pokud je nullvlastnost , Elapsed událost je vyvolána ve vlákněThreadPool.SynchronizingObject Pokud zpracování Elapsed události trvá déle, Intervalnež je , událost může být vyvolána znovu v jiném ThreadPool vlákně. V této situaci by obslužná rutina události měla být znovu zadána.
Poznámka:
Metoda zpracování událostí může běžet na jednom vlákně současně, že jiné vlákno volá metodu Stop nebo nastaví Enabled vlastnost na false. To může mít za následek Elapsed vyvolání události po zastavení časovače. Příklad kódu pro metodu Stop ukazuje jeden způsob, jak se vyhnout této časování podmínky.
I když SynchronizingObject není null, Elapsed události mohou nastat po Dispose volání nebo metodě nebo Stop po Enabled nastavení falsevlastnosti , protože signál pro vyvolání Elapsed události je vždy zařazen do fronty pro spuštění ve vlákně fondu vláken. Jedním ze způsobů, jak tento stav časování vyřešit, je nastavit příznak, který obslužné rutině Elapsed události říká, aby událost ignorovala následné události.
Komponenta Timer zachytí a potlačí všechny výjimky vyvolané obslužnými rutinami událostí pro danou Elapsed událost. Toto chování se může změnit v budoucích verzích rozhraní .NET Framework.