C#编程之Timer的使用
白羽 2018-07-10 来源 :网络 阅读 1308 评论 0

摘要:本文将带你了解C#编程之Timer的使用,希望本文对大家学C#/.Net有所帮助。


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;
             }            
         }
 }

 


以上就介绍了C#.NET的相关知识,希望对C#.NET有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言C#.NET频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程