C# 实战-三种类型的Timer

在C#中,主要有三种类型的Timer:

System.Windows.Forms.Timer

System.Timers.Timer

System.Threading.Timer

以下是每种Timer的简要说明和示例:

1. System.Windows.Forms.Timer

用于Windows Forms应用程序,适合在UI线程中使用。

csharp 复制代码
using System;
using System.Windows.Forms;

public class WinFormsTimerExample : Form
{
    private Timer timer;

    public WinFormsTimerExample()
    {
        timer = new Timer();
        timer.Interval = 1000; // 1秒
        timer.Tick += new EventHandler(OnTimerEvent);
        timer.Start();
    }

    private void OnTimerEvent(Object sender, EventArgs e)
    {
        Console.WriteLine("WinForms Timer ticked at: " + DateTime.Now);
    }

    [STAThread]
    public static void Main()
    {
        Application.Run(new WinFormsTimerExample());
    }

}

2. System.Timers.Timer

适用于需要更精确的计时和跨线程操作的场景。

csharp 复制代码
using System;
using System.Timers;

public class TimersTimerExample
{
    private static Timer timer;

    public static void Main()
    {
        timer = new Timer(1000); // 1秒
        timer.Elapsed += OnTimedEvent;
        timer.AutoReset = true;
        timer.Enabled = true;

        Console.WriteLine("Press Enter to exit the program...");
        Console.ReadLine();
    }

    private static void OnTimedEvent(Object source, ElapsedEventArgs e)
    {
        Console.WriteLine("Timers Timer ticked at: " + e.SignalTime);
    }
}

3. System.Threading.Timer

用于多线程环境,可以在任何线程上执行回调。

csharp 复制代码
using System;
using System.Threading;

public class ThreadingTimerExample
{
    private static Timer timer;

    public static void Main()
    {
        TimerCallback callback = new TimerCallback(OnTimerEvent);
        timer = new Timer(callback, null, 0, 1000); // 1秒

        Console.WriteLine("Press Enter to exit the program...");
        Console.ReadLine();
    }

    private static void OnTimerEvent(Object state)
    {
        Console.WriteLine("Threading Timer ticked at: " + DateTime.Now);
    }
}

通过这些示例,可以快速掌握每种Timer的使用场景和方法。

相关推荐
java奋斗者几秒前
基于Java的人脸识别在线考试系统(jsp+springboot+mysql8.x)
java·开发语言·spring boot
z_mazin21 分钟前
JavaScript Hook XMLHttpRequest操作:逆向与调试实战指南
开发语言·javascript·ecmascript
qq_3659116022 分钟前
WPF 资源加载问题:真是 XAML 的锅吗?
开发语言
魔道不误砍柴功28 分钟前
Jakarta EE 11发布:云原生Java企业应用的新标准
java·开发语言·云原生
小郝 小郝36 分钟前
【C语言】内存函数
c语言·开发语言
cheryl881 小时前
Python+Requests 企业级接口测试入门(1~3天)
开发语言·python
Spring-wind1 小时前
【golang】为什么协程开销小于线程
java·开发语言·golang
Yang-Never1 小时前
Open GL ES -> SurfaceView + 自定义EGL实现OpenGL渲染框架
android·开发语言·图像处理·android studio
wjs20241 小时前
Perl 发送邮件
开发语言
大刘讲IT2 小时前
构建实时、融合的湖仓一体数据分析平台:基于 Delta Lake 与 Apache Iceberg
开发语言·python·sql·mysql·数据挖掘·数据分析·json