场景

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

实现思路是使用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# 计时器的资料请关注www.887551.com其它相关文章!