C#四种计时器Timer的区别和用法
在C#编程中,计时器是很常用的功能。在.NET Framework中,提供了四种不同的计时器Timer。本文将详细讲解这四种计时器的区别和用法。
1. System.Timers.Timer
System.Timers.Timer是继承自System.ComponentModel.Component类的一个计时器。它在间隔一定时间(由Interval
属性设置)后,触发一次Elapsed
事件。在此事件中,执行处理程序来完成需要进行的操作。System.Timers.Timer采用多线程,可以同时处理多个计时器事件。
用法示例
using System;
using System.Timers;
public class Program
{
private static Timer timer;
public static void Main()
{
// 创建计时器实例
timer = new Timer();
// 设置计时器时间间隔为500毫秒
timer.Interval = 500;
// 绑定计时器事件
timer.Elapsed += Timer_Elapsed;
// 启动计时器
timer.Start();
Console.WriteLine("按任意键结束程序...");
Console.ReadKey();
}
// 计时器事件处理程序
private static void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
Console.WriteLine("当前时间:" + DateTime.Now);
}
}
2. System.Threading.Timer
System.Threading.Timer是一个基于线程池的计时器,它可以周期性地调用一个回调方法或者执行一个一次性的Delay。与System.Timers.Timer不同,它的回调方法是直接运行在线程池中,而不是在新的线程中。
用法示例
using System;
using System.Threading;
public class Program
{
private static Timer timer;
public static void Main()
{
// 创建计时器实例
timer = new Timer(new TimerCallback(Timer_Callback), null, 0, 500);
Console.WriteLine("按任意键结束程序...");
Console.ReadKey();
}
// 计时器回调方法
private static void Timer_Callback(object state)
{
Console.WriteLine("当前时间:" + DateTime.Now);
}
}
3. System.Windows.Forms.Timer
System.Windows.Forms.Timer是WinForm应用程序中的计时器。它继承自System.ComponentModel.Component类,但并没有绑定到UI线程上。该计时器每隔一定时间(由Interval属性设置)就会触发Tick事件。
用法示例
using System;
using System.Windows.Forms;
public class Program : Form
{
private static Timer timer;
public static void Main()
{
// 创建计时器实例
timer = new Timer();
// 设置计时器时间间隔为500毫秒
timer.Interval = 500;
// 绑定计时器事件
timer.Tick += Timer_Tick;
// 启动计时器
timer.Start();
Application.Run(new Program());
}
// 计时器事件处理程序
private static void Timer_Tick(object sender, EventArgs e)
{
Console.WriteLine("当前时间:" + DateTime.Now);
}
}
4. System.Diagnostics.Stopwatch
System.Diagnostics.Stopwatch是一个较为简单的计时器,只能用于测量时间间隔。它使用高精度计时器,可以达到微秒级精度,在代码性能分析和调试中有很好的应用。
用法示例
using System;
using System.Diagnostics;
public class Program
{
public static void Main()
{
// 创建计时器实例
Stopwatch stopwatch = new Stopwatch();
// 开始计时
stopwatch.Start();
// 模拟一个需要计时的操作
for (int i = 0; i < 10000000; i++)
{
Math.Sqrt(i);
}
// 停止计时
stopwatch.Stop();
// 输出时间间隔
Console.WriteLine("运行时间:" + stopwatch.ElapsedMilliseconds + "毫秒");
}
}
结论
四种计时器的区别和用法如下表:
计时器 | 区别 | 用途 |
---|---|---|
System.Timers | 基于多线程 | 定时触发事件,执行一些操作 |
System.Threading | 基于线程池 | 后台任务计时 |
System.Windows | Windows Form中的计时器,包含了一个UI thread的同步执行方法。 | 界面上的计时器,适用于UI更新的计时操作。 |
System.Diagnostics.Stopwatch | 仅用于计时,无法周期性触发事件 | 测量代码性能,统计算法执行时间等等。 |
根据实际需要进行选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#四种计时器Timer的区别和用法 - Python技术站