c#定时器使用示例详解


在C#中,定时器(Timer)是一个常用的功能,它允许你在指定的时间间隔后执行代码。C#提供了多种定时器实现,但最常用的两种是`System.Timers.Timer`和`System.Threading.Timer`。此外,Windows Forms和WPF(Windows Presentation Foundation)还提供了自己的定时器控件(如`System.Windows.Forms.Timer`和`System.Windows.Threading.DispatcherTimer`)。这里,我将提供一个基于`System.Timers.Timer`的简单示例,因为它适用于多种情况(包括控制台应用程序)。

### C#中使用`System.Timers.Timer`的示例


using System;
using System.Timers;

class Program
{
    static Timer aTimer;

    static void Main(string[] args)
    {
        // 创建一个定时器,设置其间隔时间为2000毫秒(2秒)
        aTimer = new Timer(2000);

        // 注册Elapsed事件的处理程序
        aTimer.Elapsed += OnTimedEvent;

        // 设置定时器为自动重置,这样它会在每次触发后重新计时
        aTimer.AutoReset = true;

        // 启动定时器
        aTimer.Enabled = true;

        Console.WriteLine("按 Enter 键退出...");
        Console.ReadLine();

        // 如果需要,可以在此处停止定时器
        // aTimer.Stop();
        // aTimer.Dispose();
    }

    // 定义定时器触发时调用的方法
    private static void OnTimedEvent(Object source, ElapsedEventArgs e)
    {
        Console.WriteLine("定时器触发了!{0:HH:mm:ss.fff}", e.SignalTime);
    }
}

### 示例解释

1. **创建定时器**:使用`new Timer(2000);`创建一个新的定时器,设置其间隔时间为2000毫秒(即2秒)。

2. **注册事件处理程序**:通过`aTimer.Elapsed += OnTimedEvent;`注册一个事件处理程序`OnTimedEvent`,该方法将在定时器每次触发时被调用。

3. **设置自动重置**:`aTimer.AutoReset = true;`表示定时器在触发后会自动重置计时器并等待下一次触发。如果设置为`false`,则定时器在第一次触发后停止。

4. **启动定时器**:通过`aTimer.Enabled = true;`启动定时器。

5. **处理定时器触发**:在`OnTimedEvent`方法中,你可以编写当定时器触发时要执行的代码。在这个例子中,它简单地打印了当前的时间戳。

6. **退出和清理**:程序等待用户按Enter键退出。在实际应用中,你可能需要在退出前停止并清理定时器资源,以避免资源泄露。这可以通过调用`aTimer.Stop();`和`aTimer.Dispose();`实现。

这个示例演示了如何在C#中使用`System.Timers.Timer`来定期执行代码。你可以根据需要调整间隔时间和事件处理程序中的代码。