ElapsedEventHandler Delegado

Definición

Representa el método que controlará el evento Elapsed de Timer.Represents the method that will handle the Elapsed event of a Timer.

public delegate void ElapsedEventHandler(System::Object ^ sender, ElapsedEventArgs ^ e);
public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);
type ElapsedEventHandler = delegate of obj * ElapsedEventArgs -> unit
Public Delegate Sub ElapsedEventHandler(sender As Object, e As ElapsedEventArgs)

Parámetros

sender
Object

Origen del evento.The source of the event.

e
ElapsedEventArgs

Objeto ElapsedEventArgs que contiene los datos del evento.An ElapsedEventArgs object that contains the event data.

Ejemplos

En el ejemplo de código siguiente se configura un controlador de eventos para el Timer.Elapsed evento, se crea un temporizador y se inicia el temporizador.The following code example sets up an event handler for the Timer.Elapsed event, creates a timer, and starts the timer. El controlador de eventos tiene la misma firma que el ElapsedEventHandler delegado.The event handler has the same signature as the ElapsedEventHandler delegate. El controlador de eventos muestra la SignalTime propiedad cada vez que se genera.The event handler displays the SignalTime property each time it is raised.

// Use this code inside a project created with the Visual C++ > CLR > CLR Console Application template. 
// Replace the code in the default .cpp file with this code. 

#include "stdafx.h"
#using <system.dll>

using namespace System;

// To avoid confusion with other Timer classes, this sample always uses the fully-qualified
// name of System::Timers::Timer instead of a using statement for System::Timer.

public ref class Example
{
private:
    static System::Timers::Timer^ aTimer;

public:
    static void Demo()
    {
        // Normally, the timer is declared at the class level, so that it stays in scope as long as it
        // is needed. If the timer is declared in a long-running method, KeepAlive must be used to prevent
        // the JIT compiler from allowing aggressive garbage collection to occur before the method ends.
        // You can experiment with this by commenting out the class-level declaration and uncommenting 
        // the declaration below; then uncomment the GC.KeepAlive(aTimer) at the end of the method.        
        //System::Timers::Timer^ aTimer; 

        // Create a timer and set a two second interval.
        aTimer = gcnew System::Timers::Timer();
        aTimer->Interval = 2000;

        // Alternate method: create a Timer with an interval argument to the constructor.
        //aTimer = gcnew System::Timers::Timer(2000);

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

        // If the timer is declared in a long-running method, use KeepAlive to prevent garbage collection
        // from occurring before the method ends.  
        //GC::KeepAlive(aTimer);
    }

private:
    static void OnTimedEvent(Object^ source, System::Timers::ElapsedEventArgs^ e)
    {
        Console::WriteLine("The Elapsed event was raised at {0}", e->SignalTime);
    }

};

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

// This 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 

// Use this code inside a project created with the Visual C# > Windows Desktop > Console Application template.
// Replace the code in Program.cs with this code.

using System;

// To avoid confusion with other Timer classes, this sample always uses the fully-qualified
// name of System.Timers.Timer instead of a using statement for System.Timers.

public class Example
{
    private static System.Timers.Timer aTimer;

    public static void Main()
    {
        // Normally, the timer is declared at the class level, so that it stays in scope as long as it
        // is needed. If the timer is declared in a long-running method, KeepAlive must be used to prevent
        // the JIT compiler from allowing aggressive garbage collection to occur before the method ends.
        // You can experiment with this by commenting out the class-level declaration and uncommenting
        // the declaration below; then uncomment the GC.KeepAlive(aTimer) at the end of the method.
        //System.Timers.Timer aTimer;

        // Create a timer and set a two second interval.
        aTimer = new System.Timers.Timer();
        aTimer.Interval = 2000;

        // Alternate method: create a Timer with an interval argument to the constructor.
        //aTimer = new System.Timers.Timer(2000);

        // Create a timer with a two second interval.
        aTimer = new System.Timers.Timer(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();

        // If the timer is declared in a long-running method, use KeepAlive to prevent garbage collection
        // from occurring before the method ends.
        //GC.KeepAlive(aTimer)
    }

    private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime);
    }
}

// This 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

' Use this code inside a project created with the Visual Basic > Windows Desktop > Console Application template. 
' Replace the default code in Module1.vb with this code. Then right click the project in Solution Explorer, 
' select Properties, and set the Startup Object to Timer1. 

' To avoid confusion with other Timer classes, this sample always uses the fully-qualified
' name of System.Timers.Timer.

Public Class Module1

    Private Shared aTimer As System.Timers.Timer

    Public Shared Sub Main()
        ' Normally, the timer is declared at the class level, so that it stays in scope as long as it
        ' is needed. If the timer is declared in a long-running method, KeepAlive must be used to prevent
        ' the JIT compiler from allowing aggressive garbage collection to occur before the method ends.
        ' You can experiment with this by commenting out the class-level declaration and uncommenting 
        ' the declaration below; then uncomment the GC.KeepAlive(aTimer) at the end of the method.        
        'Dim aTimer As System.Timers.Timer 

        ' Create a timer and set a two second interval.
        aTimer = New System.Timers.Timer()
        aTimer.Interval = 2000

        ' Alternate method: create a Timer with an interval argument to the constructor.
        ' aTimer = New System.Timers.Timer(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()

        ' If the timer is declared in a long-running method, use KeepAlive to prevent garbage collection
        ' from occurring before the method ends. 
        'GC.KeepAlive(aTimer) 
    End Sub

    Private Shared Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
        Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime)
    End Sub
End Class

' This 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 

Comentarios

Cuando se crea un ElapsedEventHandler delegado, se identifica el método que controlará el Timer.Elapsed evento.When you create an ElapsedEventHandler delegate, you identify the method that will handle the Timer.Elapsed event. Para asociar el evento al controlador, se debe agregar una instancia del delegado al evento.To associate the event with your event handler, add an instance of the delegate to the event. Siempre que se produce el evento, se llama a su controlador, a menos que se quite el delegado.The event handler is called whenever the event occurs, unless you remove the delegate. Para obtener más información sobre los delegados de controladores de eventos, vea controlar y provocar eventos.For more information about event handler delegates, see Handling and Raising Events.

Métodos de extensión

GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.Gets an object that represents the method represented by the specified delegate.

Se aplica a

Consulte también