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

原创 2004年10月27日 11:07:00
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!");
}









 

一个疑惑的问题:QObject::killTimer: Timers cannot be stopped from another thread

QObject的connect函数有几种连接方式,     a) DirectConnection,信号发送后槽函数立即执行,由sender的所在线程执行;     b) QueuedConnec...
  • zzwdkxx
  • zzwdkxx
  • 2017年08月03日 15:36
  • 762

[pyQt_Error]QObject::killTimer: timers cannot be stopped from another thread

QObject::killTimer: timers cannot be stopped from another thread出现这个错误的原因在于在次线程中执行主线程对象的一些操作引起的 可以这...
  • qq_30043465
  • qq_30043465
  • 2017年01月18日 23:14
  • 1787

nodeJS入门例子一—定时器(timers)

Timers         setTimeout(callback, delay, [arg], [...])         clearTimeout(timeoutId)         ...
  • shenshouer
  • shenshouer
  • 2011年11月24日 12:46
  • 3639

The differen between Server Timers, Windows Timers, and Thread Timers

Server-based timers allow you to specify a recurring interval at which an event will be raised in yo...
  • niuniu23_1982
  • niuniu23_1982
  • 2007年01月01日 10:19
  • 777

Thread Sleep 和Timer

1. Thread.sleep()休眠的目前正在执行的线程,比如下面的类里,当前线程指的是main主线程。 public static void main(String[] args)  { ...
  • euijkfd
  • euijkfd
  • 2018年01月30日 15:38
  • 12

Timers

TimersYou only need to know about two functions to use timers. CWnd::SetTimer programs a timer to fi...
  • lemonade
  • lemonade
  • 2001年05月30日 01:53
  • 830

解决PyQt错误(QObject::startTimer: QTimer can only be used with threads started with QThread)

近日在PyQt使用Model时,发现如果Model创建时未设置Parent,则运行完退出时会报错:QObject::startTimer: QTimer can only be used with t...
  • u012150360
  • u012150360
  • 2017年12月20日 16:11
  • 155

32 timer的timers

所以采用内部时钟。TIM2-TIM5的时钟不是直接来自于APB1,而是来自于输入为APB1的一个倍频器。这个倍频器的作用是:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB...
  • gtkknd
  • gtkknd
  • 2014年04月10日 10:51
  • 913

Linux 内核时钟之经典timer处理

/*  * This function runs timers and the timer-tq in bottom half context.  */ static __latent_entropy...
  • sunlei0625
  • sunlei0625
  • 2017年03月24日 18:06
  • 215

APUE 习题10.5 - Implementing Software Timer

这是我自己实现的版本,参考 Don Libes 的 Implementing Software Timer 我是用alarm实现的,好像不太精确,还有一个版本可以设定定时器的次数,可是随着次数...
  • leon11112010
  • leon11112010
  • 2011年08月10日 22:22
  • 1279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Server Timers, Windows Timers, and Thread Timers的对比
举报原因:
原因补充:

(最多只允许输入30个字)