1.System.Windows.Forms.Timer:
实现机制:使用消息循环机制实现,即通过向消息队列中添加 WM_TIMER 消息实现定时器的触发。
精度:精度一般较低,定时器的最小间隔为 15 毫秒,不够精确。
执行方式:定时器的回调函数在 UI 线程上执行,如果回调函数执行时间过长,可能会影响 UI 响应性。
2.System.Threading.Timer:
实现机制:使用线程池和操作系统定时器实现,定时器触发时会创建新线程执行定时器回调函数。
精度:精度较高,可以通过调整定时器的构造函数参数设置定时器的精度和间隔。
执行方式:定时器回调函数在线程池中执行,可以处理复杂的计算和操作,但需要注意线程安全问题。
3.System.Timers.Timer:
实现机制:使用操作系统定时器实现,与 System.Threading.Timer 不同,使用 System.Timers.Timer 创建的定时器是基于线程池的,可以并发执行多个任务。
精度:精度较高,可以通过调整定时器的构造函数参数设置定时器的精度和间隔。
执行方式:定时器回调函数在线程池中执行,可以处理复杂的计算和操作,但需要注意线程安全问题。
4.System.Diagnostics.Stopwatch:
实现机制:使用高精度计时器实现,通过调用 QueryPerformanceCounter 函数获取时间戳来计算时间间隔。
精度:精度非常高,可以测量微秒级别的时间间隔。
执行方式:没有定时器事件触发,需要手动调用 Start 和 Stop 方法启动和停止计时器。
总的来说,以上定时器的选择应根据具体的应用需求和场景来进行选择和使用。如果只需要简单的定时器功能,可以使用 System.Windows.Forms.Timer,如果需要高精度的定时器功能,可以使用 System.Threading.Timer 或 System.Timers.Timer。如果需要测量代码执行时间,可以使用 System.Diagnostics.Stopwatch。
标签:定时器,System,Timer,几种,计时器,线程,执行,精度,Winform From: https://www.cnblogs.com/whr2071/p/17198004.html