Server Timers, Windows Timers, and Thread Timers的对比

来源:互联网 发布:java开发超市管理系统 编辑:程序博客网 时间:2024/04/29 13:58
Server Timers提供了一种定时执行常规操作的机制,例如:有个关键的服务需要7*24Hours/Week,那就可以创建使用Timer的检查程序,定时的检查该关键服务启动,如果没有启动,检查程序就重新启动该关键服务,并通知系统管理员
注意:Server Timers的间隔最小单位是豪秒

Server Timers, Windows Timers, and Thread Timers
在DotNet Framework中有三中Timers,Server-based Timer在Toolbox的Components Tab 中,标准的Windows-base Timer在Toolbox的Windows Forms Tab中,而Thread Timer只能在程序中使用(无UI界面),Windows-base Timers从VB1.0开始就存在了,并且本质没有改变,Windows-base Timer 通常在WinForm中使用,Servers-base Times是传统的Timers的升级、优化,更适用与Server环境,Thread Timers是一简单的、轻量级的Timer,只是用回掉方法调用方法代替Event,为Threadpool的threads服务。

Threads在Win32的程序中有两种架构:Ui Threads,Worker Threads, UI Threads是在等待新Message 到Message loops,一旦有新Message,他们就Handle新Message,并且等待下一个Message,相反的,Worker Threads执行一个后台的操作,不需要Message loops.

Windows Times 和 Server Timer 都用了 Interval 属性,该属性在Timer的Constructor中设定,Timers为不同的设计目的设置该属性。


  • Windows Timers是为single-threaded 设计的,需要用户写UI界面去激活它,并且自始自终在一个Thread中,或者Marshal 一个Call 到另一个Thread,对与com组件来说,这样的执行是有害的
  • Server timers 是为multi-threaded 设计的,应为它用了不同的构架,有更多的使用时间,Server可以夸Thread
  • Thread Timers 在没有Message是很有效,例如Window Timer 依靠OS的支持,如果没有Message在Thread中,Timers中的事件就不会触发,而此时,Thread Timer就很有用了

Windows Timers 在System.Windows.Forms 的名字空间中, Server timer在 System.Timers 的名字空间中, Thread timer 在System.Threading 的名字空间中

Server Timer 的关键元素

Timer 会产生Timer.Elapsed,你可以接管它,执行想要的操作

其他的重要的属性和方法

  • Interval是扫描的时间间隔(以毫秒为单位),触发Event事件.例如:Interval 为1000时候,就是每隔一秒中执行一次
  • AutoReset 检测在Event触发以后,Timer是否继续,True,继续,False就是停止
  • Start方法将Timers 的Enabled 属性设为True(允许Timers开始)如果Timer已经Start,那么就是重置Timer
  • Stop 方法将Timers 的Enabled 属性设为True(Timers停止)

Sample Code:
private void CreateTimer()
{
   System.Timers.Timer Timer1 = new System.Timers.Timer();
   Timer1.Enabled = true;
   Timer1.Interval = 5000;
   Timer1.Elapsed +=
      new System.Timers.ElapsedEventHandler(Timer1_Elapsed);
}

private void Timer1_Elapsed(object sender,
System.Timers.ElapsedEventArgs e)
{
   System.Windows.Forms.MessageBox.Show("Elapsed!",
      "Timer Event Raised!");
}









 

原创粉丝点击