首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C#中三种Timer的使用

C#中三种Timer的使用

原创
作者头像
软件架构师Michael
发布2025-07-30 10:41:14
发布2025-07-30 10:41:14
5390
举报

在C#中,Timer控件用于在指定的时间间隔内执行代码。它主要有三种类型:System.Windows.Forms.TimerSystem.Timers.TimerSystem.Threading.Timer

1.System.Windows.Forms.Timer

System.Windows.Forms.Timer主要用于Windows窗体应用程序。它运行在主线程上,通过Tick事件触发。以下是一个简单的示例:

代码语言:csharp
复制
// 创建Timer控件
 System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); 
 // 设置间隔时间为1000毫秒(1秒)
  timer1.Interval = 1000; 
 // 启用Timer
  timer1.Enabled = true; 
 // 绑定Tick事件
  timer1.Tick += new EventHandler(timer1_Tick); 
 // Tick事件处理函数
  private void timer1_Tick(object sender, EventArgs e)
  {
   // 在这里编写定时执行的代码
    MessageBox.Show("Tick event triggered!");
  }

在这个示例中,Timer每隔1秒触发一次Tick事件,并显示一个消息框。

2.System.Timers.Timer

System.Timers.Timer可以在多线程或单线程中运行,通过Elapsed事件触发。它适用于对时间精度要求较高的场景。以下是一个示例:

代码语言:csharp
复制
// 创建Timer对象
System.Timers.Timer timer2 = new System.Timers.Timer();

// 设置间隔时间为1000毫秒(1秒)
timer2.Interval = 1000;

// 启用Timer
timer2.Enabled = true;

// 设置AutoReset属性为true,表示事件关联的方法会一直执行
timer2.AutoReset = true;

// 绑定Elapsed事件
timer2.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);

// Elapsed事件处理函数
private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
{
// 在这里编写定时执行的代码
Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", e.SignalTime);
}

在这个示例中,Timer每隔1秒触发一次Elapsed事件,并在控制台输出当前时间

3.System.Threading.Timer

System.Threading.Timer运行在线程池中,以回调的方式实现定时任务。以下是一个示例:

代码语言:csharp
复制
// 创建Timer对象
 System.Threading.Timer timer3; 
 // 定义回调函数
  TimerCallback callback = new TimerCallback(TimerTask); 
 // 启动Timer,设置启动时间为0,间隔时间为1000毫秒(1秒)
  timer3 = new System.Threading.Timer(callback, null, 0, 1000); 
 // 回调函数
  private static void TimerTask(object state)
  { 
  // 在这里编写定时执行的代码
   Console.WriteLine("Timer callback executed at {0:HH:mm:ss.fff}", DateTime.Now);
  }

在这个示例中,Timer每隔1秒执行一次回调函数,并在控制台输出当前时间

【小结】

在C#中,Timer控件提供了多种实现方式,适用于不同的应用场景。

System.Windows.Forms.Timer适用于Windows窗体应用程序,System.Timers.Timer适用于对时间精度要求较高的场景,

System.Threading.Timer则适用于多线程环境

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档