C#中timer类的用法总结

 更新时间:2013年10月22日 10:08:20   作者:  
System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环

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#中虚方法virtual示例详解

    C#中虚方法virtual示例详解

    这篇文章主要介绍了C#中虚方法virtual的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • 详解C#中的定时器Timer类及其垃圾回收机制

    详解C#中的定时器Timer类及其垃圾回收机制

    这篇文章主要介绍了C#中的定时器Timer类及其垃圾回收机制,讲解了Timer相关的单线程异步工作,需要的朋友可以参考下
    2016-04-04
  • 简单介绍C# 中的扩展方法

    简单介绍C# 中的扩展方法

    这篇文章主要介绍了C# 中的扩展方法的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • C# App.config和Web.config加密的实现步骤

    C# App.config和Web.config加密的实现步骤

    本文介绍了如何使用C#对App.config和Web.config文件进行加密,通过使用ConfigurationSection类和SymmetricAlgorithm类,我们可以保护配置文件中的敏感数据,确保只有授权人员可以访问
    2023-08-08
  • C# 实现QQ式截图功能实例代码

    C# 实现QQ式截图功能实例代码

    本篇文章主要介绍了C# 实现QQ式截图功能实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • C#简单实现在网页上发邮件的案例

    C#简单实现在网页上发邮件的案例

    本文分享一个C#利用SMTP发送邮件的案例,提供了前后台代码,方便大家学习。
    2016-03-03
  • Unity3D实现飞机大战游戏(1)

    Unity3D实现飞机大战游戏(1)

    这篇文章主要为大家详细介绍了Unity3D实现飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • C#基础入门之算法:交换

    C#基础入门之算法:交换

    本文主要介绍了C#中算法:交换的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 如何利用现代化C#语法简化代码

    如何利用现代化C#语法简化代码

    这篇文章主要给大家介绍了关于如何利用现代化C#语法简化代码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • C#使用密封类实现密封用户信息的示例详解

    C#使用密封类实现密封用户信息的示例详解

    在C#中,密封类(sealed class)是一种不能被其他类继承的类,它用于防止其他类继承它的功能和属性, 下面我们就来看看如何使用密封类密封用户的信息吧
    2024-02-02

最新评论