服务器计时器与 Windows 计时器
在 Visual Studio .NET 中有两种计时器控件——基于服务器的计时器,它位于工具箱的“组件”选项卡;标准的基于 Windows 的计时器,它位于工具箱的“Windows 窗体”选项卡。基于 Windows 的计时器从 Visual Basic 的 1.0 版起就存在于该产品中并且基本上保持不变。该计时器已经为在 Windows 窗体应用程序中使用而进行了优化。基于服务器的计时器是传统的计时器为了在服务器环境上运行而优化后的更新版本。
在 Win32 体系结构中有两种类型的线程:UI 线程和辅助线程。UI 线程绝大多数时间处于空闲状态,等待消息循环中的消息到来。一旦接收到消息,它们就进行处理并等待下一个消息到来。另外,辅助线程用来执行后台处理而且不使用消息循环。虽然 Windows 计时器和基于服务器的计时器运行时都使用
- Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理。 Windows 计时器的精度限定为 55 毫秒。这些传统计时器要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。对于 COM 组件来说,这样会降低性能。
- 基于服务器的计时器是为在多线程环境下与辅助线程一起使用而设计的。由于它们使用不同的体系结构,因此基于服务器的计时器可能比 Windows 计时器精确得多。服务器计时器可以在线程之间移动来处理引发的事件。
Windows 计时器在 System.Winforms.Forms 命名空间中,服务器计时器在 System.Timers 命名空间中。从实用角度来说,推荐您在基于 Windows 窗体的应用程序中使用 Windows 计时器,在其他类型的应用程序中使用服务器计时器。