ElapsedEventHandler 委托  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public delegate void ElapsedEventHandler(System::Object ^ sender, ElapsedEventArgs ^ e);public delegate void ElapsedEventHandler(object? sender, ElapsedEventArgs e);public delegate void ElapsedEventHandler(object sender, ElapsedEventArgs e);type ElapsedEventHandler = delegate of obj * ElapsedEventArgs -> unitPublic Delegate Sub ElapsedEventHandler(sender As Object, e As ElapsedEventArgs)参数
- sender
- Object
事件源。
包含事件数据的 ElapsedEventArgs 对象。
示例
下面的代码示例为 Timer.Elapsed 事件设置事件处理程序,创建计时器,并启动计时器。 事件处理程序具有与委托相同的签名 ElapsedEventHandler 。 每次引发该属性时, SignalTime 事件处理程序都会显示该属性。
// 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
// 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.
module Example
let mutable aTimer = new System.Timers.Timer()
let onTimedEvent source (e: System.Timers.ElapsedEventArgs) =
    printfn $"The Elapsed event was raised at {e.SignalTime}"
[<EntryPoint>]
let 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
    // Set a two second interval.
    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.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
    // 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)
    0
// 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
注解
创建 ElapsedEventHandler 委托时,将标识将处理事件 Timer.Elapsed 的方法。 若要将事件与事件处理程序关联,请将该委托的一个实例添加到事件中。 除非移除了该委托,否则每当发生该事件时就会调用事件处理程序。 有关事件处理程序委托的详细信息,请参阅 处理和引发事件。
扩展方法
| GetMethodInfo(Delegate) | 获取指示指定委托表示的方法的对象。 |