解读 --- System.Windows.Forms.Timer是前台线程吗?

💡 原文中文,约2500字,阅读约需6分钟。
📝

内容提要

本文讨论了System.Windows.Forms.Timer控件的工作原理和源码解析,通过Windows消息循环机制触发Tick事件,每个Interval时间间隔后放入WM_TIMER消息队列。解析了Timer的源码,包括创建实例、注册Tick事件、启动Timer和TimerNativeWindow的实现。得出结论,System.Windows.Forms.Timer依赖于UI线程和Windows消息循环机制实现定时器。

🎯

关键要点

  • System.Windows.Forms.Timer 是 Windows Forms 中的一个定时器控件,基于 Windows 消息循环机制工作。
  • Timer 控件利用 Windows 的消息机制在每个 Interval 时间间隔后触发 Tick 事件。
  • WM_TIMER 消息由 Windows 消息循环派发,用于触发 Timer 的 Tick 事件。
  • System.Windows.Forms.Timer 的源码相对简单,主要包括创建实例、注册 Tick 事件、启动 Timer 和 TimerNativeWindow 的实现。
  • 创建 Timer 实例时,默认 Interval 值为100毫秒,使用时需设置触发间隔时间。
  • 注册 Tick 事件是将处理方法赋值给 onTimer 委托。
  • Timer 的 Start() 和 Stop() 方法实际上是通过设置 Enabled 属性来控制定时器的启停。
  • TimerNativeWindow 是 System.Windows.Forms.Timer 的私有变量,负责启动定时器。
  • StartTimer() 方法向 Windows 消息循环机制的消息队列中插入 Timer 消息。
  • WndProc(ref Message m) 方法用于处理窗口消息,包括 Timer 的触发事件。
  • WM_TIMER 消息的十进制值为275,WM_CLOSE 消息的十进制值为16。
  • System.Windows.Forms.Timer 依赖于 UI 线程和 Windows 消息循环机制实现定时器。
➡️

继续阅读