• C#中的System.Windows.Forms.Timer,System.Tiemrs.Timer,System.Thread.Timer,System.Web.UI.Timer


    在C#中有4类Timer,分别如下:

    1.System.Windows.Forms.Timer,顾名思义该Timer是Winform中的一个控件,可以拖放到窗体之上,设置它的Interval属性和Tick事件即可,同时要设置Enable为true(启用,另外该Timer属于UI级别的,即执行该Timer会造成UI阻塞。

    2.System.Timers.Timer,该线程是通过Thread Pool来完成的,和UI不是一个线程的,所以不用担心阻塞的情况,该Timer和System.Thread.Timer非常类似都是通过Thread Pool,但是该Timer的初次触发事件是在设定的Interval之后的,即首次运行也需要等待一个时间才会执行,而System.Thread.Timer是首次会执行,从第二次开始才是间隔时间.

    3.System.Thread.Timer,该线程是通过Thread Pool来完成的,和UI不是一个线程的,所以不用担心阻塞的情况。该Timer是通过回调绑定的方式实现即时的,当然在声明和使用上与System.Timers.Timer还是有很大的差别,同时还可以指定执行的等待时间,即在某次回调开始前等待多久(是在Interval计算之后)。

    看个实例:

    这个是System.Timers.Timer的例子:

                System.Timers.Timer timerPing = new System.Timers.Timer(900000);//指定间隔事件,以毫秒计算
    timerPing.Elapsed += new System.Timers.ElapsedEventHandler(timerPing_Elapsed);//绑定调用的事件
    timerPing.AutoReset = true;//设置为自动调用
    timerPing.Enabled = true;//启用
    timerPing.Start();//调用开始方法
     void timerPing_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
    //dosomething
    }


    以下是System.Threading.Timer的例子:

    可以看到它的定义和System.Timers.Timer有很大的差别,第一个参数为回调函数,该函数需要是一个参数为object类型的参数,第二个参数为回调函数的参数值,可以为

    空,第三个参数为调用回调函数的延迟时间,第四个参数为回调函数的间隔事件(经实例验证,当不传递延迟时间参数会出现timer停止的情况,具体原因不明确).

    System.Threading.Timer timerPing= new System.Threading.Timer(StatisticaData, null, 1000, 3600000);

      void StatisticaData(object state)
    {
    //dosomething;
    }


    以上就是简单的几个Timer的介绍,望多多指正。


  • 相关阅读:
    Linux压缩和解压缩命令(linux必学基础)
    Windows Server 2012 忘记登录密码怎么办?
    linux双网卡双网关设置
    date命令的帮助信息,使用date命令输出数字做为命名标题则不会有重复标题
    linux中history加入显示时间命令代码
    the MTS failed last time时的解决办法
    linux tar.gz zip 解压缩 压缩命令
    如果centos7添加新网卡,系统不识别的解决办法
    Linux常用命令英文全称与中文解释 (pwd、su、df、du等)
    使用动态规划算法解释硬币找零问题
  • 原文地址:https://www.cnblogs.com/ListenFly/p/2218672.html
Copyright © 2020-2023  润新知