您的位置:首页 > 编程语言 > C#

C#中timer类的用法总结

2015-12-28 15:21 459 查看
转自:http://www.jb51.net/article/42285.htm

C#中timer类的用法
关于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类 

//实例化Timer类,设置间隔时间为10000毫秒; 

System.Timers.Timer t = new System.Timers.Timer(10000);

//到达时间的时候执行事件;

t.Elapsed += new System.Timers.ElapsedEventHandler(theout); 

t.AutoReset = true;//设置是执行一次(false)还是一直执行(true); 

t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;

====================================

自己写的一个用System.Timer类的方法

复制代码代码如下:

public class BF_CheckUpdate

     {

         private static object LockObject = new Object();

         // 定义数据检查Timer

         private static Timer CheckUpdatetimer = new Timer();

         // 检查更新锁

         private static int CheckUpDateLock = 0;

         ///

         /// 设定数据检查Timer参数

         ///

         internal static void GetTimerStart()

         {

             // 循环间隔时间(10分钟)

             CheckUpdatetimer.Interval = 600000;

             // 允许Timer执行

             CheckUpdatetimer.Enabled = true;

             // 定义回调

             CheckUpdatetimer.Elapsed += new ElapsedEventHandler(CheckUpdatetimer_Elapsed);

             // 定义多次循环

             CheckUpdatetimer.AutoReset = true;

         }

         ///

         /// timer事件

         ///

         ///

         ///

         private static void CheckUpdatetimer_Elapsed(object sender, ElapsedEventArgs e)

         {

            // 加锁检查更新锁

             lock (LockObject)

             {

                 if (CheckUpDateLock == 0) CheckUpDateLock = 1;

                 else return;

             }         

            //More code goes here.

           //具体实现功能的方法

            Check();

               // 解锁更新检查锁

             lock (LockObject)

             {

                 CheckUpDateLock = 0;

             }            

         }

       } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: