欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c# 实现计时器功能

程序员文章站 2022-06-23 10:50:34
场景在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控。实现思路是使用timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作。实现但是timer有...

场景

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

实现思路是使用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# 计时器