Timer 组件是基于服务器的计时器,在应用程序中能够在指定的间隔时间、周期性的引发Elapsed 事件,我们可以操控此事件以提供自己需要的定期处理。
在 .NET 中有两种计时器控件——基于服务器的计时器和标准的基于Windows 的计时器。
基于 Windows 的计时器为在 Windows 窗体应用程序中使用而进行了优化,基于服务器的计时器是传统的计时器为了在服务器环境上运行而优化后的更新版本。
基于服务器的Timer 是为在多线程环境中用于辅助线程而设计的,可以在线程间移动来处理引发的Elapsed 事件,这样就可以比Windows 计时器更精确地按时引发事件。
我这里主要用于设置一个超时时长问题,代码如下:
public int SetTimeOut(int timeout)
{
if (mTimeout == timeout) return 1;
if (this.mTimeOutTimer == null)
{
this.mTimeOutTimer = new System.Timers.Timer(timeout);//初始化 Timer 组件
ElapsedEventHandler th = new ElapsedEventHandler(TimeOutEventHandle);//创建Elapsed事件
GC.KeepAlive(th);//使得不被回收
this.mTimeOutTimer.Elapsed += th;//添加 ElapsedEventHandle 事件
//每到指定时间Elapsed事件是触发一次(false),还是一直触发(true)
this.mTimeOutTimer.AutoReset = true;
}
else
{
this.mTimeOutTimer.Interval = timeout;//获取或设置引发 Elapsed 事件的间隔
}
mTimeout = timeout;
this.mTimeOutTimer.Enabled = false;//不引发 Elapsed 事件
return 1;
}