• C#中timer类的用法


    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;
                 }            
             }
     }
  • 相关阅读:
    bootstrap 超大屏幕(Jumbotron)
    Bootstrap历练实例:激活导航状态
    Bootstrap 徽章(Badges)
    Bootstrap历练实例:标签修饰
    Bootstrap 标签
    bootstrap 翻页的状态
    [uiautomator篇][10] uiautomator进阶
    [adb 学习篇] adb pull
    安装adb工包
    [python IO学习篇] 补充中文编码
  • 原文地址:https://www.cnblogs.com/xuxiaoshuan/p/4760186.html
Copyright © 2020-2023  润新知