Sdílet prostřednictvím


Timer.Elapsed Událost

Definice

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.

Platí pro

Viz také