误人子弟

先做人,再做技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于C#中timer类 在C#里关于定时器类就有3个

Posted on 2010-08-19 10:18  误人子弟  阅读(212)  评论(0编辑  收藏  举报

·关于C#中timer类  在C#里关于定时器类就有3个  
1.定义在System.Windows.Forms里  
2.定义在System.Threading.Timer类里  
3.定义在System.Timers.Timer类里 

System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。  
 
System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET  Thread  Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

例:
使用System.Timers.Timer类
System.Timers.Timer t = new System.Timers.Timer(10000);//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;

public void theout(object source, System.Timers.ElapsedEventArgs e)
{
MessageBox.Show("OK!");
}  

 
 

在global.asax 中使用.


Timer timer;

    Timer timerUrl;

    void Application_Start(object sender, EventArgs e)
    {

        TimerCallback callBack2 = new TimerCallback(Test2);
        timerUrl = new Timer(callBack2, sender, 1000, 1000);
    }

    private void Test2(Object state)
    {
        // 定时操作写到这里
       }

 

    void Application_End(object sender, EventArgs e)
    {
        timerUrl.Dispose();
    }