c# 实现计时器功能

 更新时间:2020年12月23日 15:44:20   作者:霸道的程序猿  
这篇文章主要介绍了c# 实现计时器功能的示例代码,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

场景

在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控。

实现思路是使用Timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作。

实现

但是Timer有三个

1.定义在System.Windows.Forms里  
2.定义在System.Threading.Timer类里  
3.定义在System.Timers.Timer类里

一开始使用的是System.Windows.Forms里面的

System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。

使用代码示例:

新建定时器类对象

System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();

设置执行的间隔时间,单位毫秒

_timer.Interval = 1000;

设置间隔时间内执行的方法

_timer.Tick +=_timer_Tick;
private void _timer_Tick(object sender, EventArgs e)
  {
    //执行的业务
  }

启动计时器

_timer.Start();

停止计时器

_timer.Stop();

但是发现此定时器并不执行,其每秒执行一次的方法不执行,原来其在控制台程序中没法使用

所以改为了System.Timers.Timer

新建定时器对象并设置执行的间隔时间为1秒

System.Timers.Timer _timerWaterTank = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒; 

设置定时器的执行事件

_timerWaterTank.Elapsed += new System.Timers.ElapsedEventHandler(_timerWaterTank_Tick);//到达时间的时候执行事件;

设置是执行一次还是一直执行

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

具体执行的事件方法

private void _timerWaterTank_Tick(object sender, EventArgs e)
      {
        System.Timers.Timer timer = sender as System.Timers.Timer;
        //要计时的时间秒数
        this.LowLevelSecondsWaterTank--;
        if (this.LowLevelSecondsWaterTank <= 0)
        {
          //倒计时结束后执行的业务
          Global.PublicVar.Instance.IsGoOnMonitorWaterPool = true;
          timer.Enabled = false;
          this.LowLevelSecondsWaterTank = Global.LOW_LEVEL_MONITOR_SECONDS;
          
        }
      }

这样让定时器一秒执行一次方法,在此方法中将秒数减1,这样在秒数到0的时候执行具体的业务。

启动定时器

timer.Enabled = true;

停止计时器

timer.Enabled = false;

以上就是c# 实现计时器功能的详细内容,更多关于c# 计时器的资料请关注脚本之家其它相关文章!

相关文章

  • c#异步发送邮件的类

    c#异步发送邮件的类

    这篇文章主要介绍了使用c#异步发送邮件的类,大家参考使用吧
    2014-01-01
  • C#中dotnetcharting的用法实例详解

    C#中dotnetcharting的用法实例详解

    这篇文章主要介绍了C#中dotnetcharting的用法,以实例形式详细分析了基于dotnetcharting的图表绘制的各种常用方法,是非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • 详解c# 线程同步

    详解c# 线程同步

    这篇文章主要介绍了c# 线程同步的相关资料,文中讲解非常细致,示例代码帮助大家更好的理解和学习c# 多线程,感兴趣的朋友可以了解下
    2020-07-07
  • C# HttpClient超时重试机制详解

    C# HttpClient超时重试机制详解

    超时重试的实现方式可以使用循环结构,在请求发起后等待一定时间,若超时未收到响应,则再次发起请求,循环次数可以根据实际情况进行设置,一般建议不超过三次,这篇文章主要介绍了C# HttpClient超时重试,需要的朋友可以参考下
    2023-06-06
  • C#实现Dictionary字典赋值的方法

    C#实现Dictionary字典赋值的方法

    本文主要介绍了C#实现Dictionary字典赋值的方法,如同java中的Hasttable,C#里面有Dictionary,可以实现很高效的键值对操作。感兴趣的可以了解一下
    2021-05-05
  • C#实现微信红包功能

    C#实现微信红包功能

    这篇文章主要介绍了C#实现微信红包功能,使用正态分布计算红包金额,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • WPF实现动画效果(一)之基本概念

    WPF实现动画效果(一)之基本概念

    这篇文章介绍了WPF实现动画效果之基本概念,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C# IsDefined的问题

    C# IsDefined的问题

    这篇文章主要介绍了C# IsDefined的问题,通俗易懂,需要的朋友可以参考下。
    2016-06-06
  • C#线程池操作方法

    C#线程池操作方法

    这篇文章主要介绍了C#线程池操作方法,实例分析了C#中线程池的相关使用技巧,需要的朋友可以参考下
    2015-04-04
  • 在C#中 webbrowser的使用心得

    在C#中 webbrowser的使用心得

    最近用webbrowser做了个东西,期间有点小曲折,而且网上的解决方法也基本都是浅尝辄止,特此在这里发一下同大家分享。

    2013-04-04

最新评论