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# 计时器的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#线程倒计时器源码分享

    本文实例为大家分享了C#线程倒计时器源码,供大家参考,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace ListZZBG { class TimeHeleper { Thread thread; private TimeSpan time;

  • C#中计时器的简单实现方法示例

    本文实例讲述了C#中计时器的简单实现方法.分享给大家供大家参考,具体如下: startTime = DateTime.Now; DispatcherTimer dt = new DispatcherTimer(); dt.Interval = new TimeSpan(0, 0, 1); dt.Tick += new EventHandler(dt_Tick);//调用函数 dt.Start(); void dt_Tick(object sender, EventArgs e) { timeSp

  • C#实现的Win32控制台线程计时器功能示例

    本文实例讲述了C#实现的Win32控制台线程计时器功能.分享给大家供大家参考,具体如下: 在C#中提供了三种类型的计时器: 1.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 2.基于服务器的计时器(System.Timers.Timer) 3.线程计时器(System.Threading.Timer) 一.基于 Windows 的标准计时器(System.Windows.Forms.Timer) 首先注意一点就是:Windows 计时器是为单线程环境

  • c#编写的番茄钟倒计时器代码

    恩  主要大家可以看下思路吧  图形界面里 除了图标和音乐两个资源 别的都是代码. 时间没有用timer组件 是自创的Time类在一个线程中进行的倒计时.  对于导出记录 创建了一个Record类  别的就没什么了  .... Program.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace 番茄钟 {   

  • C#计时器的三种实现方法

    在.NET中有三种计时器: 一. System.Windows.Forms命名空间下的Timer控件,和所在的Form属于同一个线程.Timer控件只有绑定了Tick事件和设置Enabled属性为True之后才会自动计时,Stop()方法,Start()方法启动计时器重新计时: MyTimer.Enabled = true;  //启动计时器 MyTimer.Interval = 1000; //设置计时器时间间隔,单位为ms MyTimer.Stop(); //停止计时 MyTimer.Sta

  • C#中各种计时器用法小结

    本文实例总结了C#中各种计时器用法.分享给大家供大家参考,具体如下: 1.使用 Stopwatch 类 (System.Diagnostics.Stopwatch) Stopwatch 实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.在典型的 Stopwatch 方案中,先调用 Start 方法,然后调用 Stop 方法,最后使用 Elapsed 属性检查运行时间. Stopwatch 实例或者在运行,或者已停止:使用 IsRunning 可以确定 Stopwatch 的

  • c# 使用计时器和观察者模式实现报警推送需求

    前言 这两天面试了一个物联网公司高级研发,面试题是下面这样子 公司领导,部门主管,小组组长,组成员4级,假如有个 疫情预警,先通知组人员(对个人,主要有一个处理就算处理了) 如果3分钟没处理,就往组长发短信,如果组长3分钟没处理就往上级推送.一级一级的. 要求单程序并发至少支持1000tps预警事件 说实话上面需求在我做的过往项目里有过类似需求,我也只是依稀记得自己是怎么做的.类似于使用第三方任务调度框架完成上面的3分钟超时处理,然后至于分级发送则更简单了,再不济就是使用if.else这样的最原

  • C#实现多个计时器记录不同定时时间

    本文实例为大家分享了C#实现多个计时器记录不同定时时间的具体代码,供大家参考,具体内容如下 1.定义Timer类.定义委托 //定义Timer类 System.Threading.Timer t3,t1,t2,t4; //定义委托 public delegate void SetControlValue(object value); 2.初始化 private void InitTimer()//初始化 { t1= new System.Threading.Timer(new TimerCall

  • jQuery实现简单的计时器功能实例分析

    本文实例讲述了jQuery实现简单的计时器功能.分享给大家供大家参考,具体如下: 在写项目的过程中遇到要前端60秒发送验证码的业务需求,于是用到计时器的功能: setInterval(function xxx(){ //业务逻辑 },隔多少时间执行一次) 60秒计时思路: 1.设置秒数:60s 2.设置内容:实时改变,秒数+内容 3.结束后:去掉按钮的disable,内容恢复原来样子 //计时器60秒 function timeInterval(){ $("#code_send_btn"

  • JS基于面向对象实现的多个倒计时器功能示例

    本文实例讲述了JS基于面向对象实现的多个倒计时器功能.分享给大家供大家参考,具体如下: 运行效果图如下: 实现代码如下: 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &l

  • js编写简单的计时器功能

    本文实例为大家分享了js计时器功能的编写代码,供大家参考,具体内容如下 小白一枚,如有代码不规范或者写错的地方,希望得大神指导 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,

  • python实现简单的计时器功能函数

    本文实例讲述了python实现简单的计时器功能函数.分享给大家供大家参考.具体如下: 此函数通过python实现了一个简单的计时器动能: ''' Simple Timing Function. This function prints out a message with the elapsed time from the previous call. It works with most Python 2.x platforms. The function uses a simple tric

  • Android使用Handler实现定时器与倒计时器功能

    什么是Handler Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制.Handler的最常见应用场景之一便是通过Handler在子线程中间接更新UI.Handler的作用主要有两个:一是发送消息:二是处理消息,它的运作需要底层Looper和MessageQueue的支撑.MessageQueue即消息队列,它的底层用单链表实现:Looper则负责在一个循环中不断从MessageQueue中取消息,若取到了就交由Handler进

  • JS使用setInterval实现的简单计时器功能示例

    本文实例讲述了JS使用setInterval实现的简单计时器功能.分享给大家供大家参考,具体如下: 使用setInterval实现计时,并且满60秒向分钟进一,满60分钟向小时进一. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>www.jb51.net JS计时器</title> <script> window.onload =

  • Android开发实现的计时器功能示例

    本文实例讲述了Android开发实现的计时器功能.分享给大家供大家参考,具体如下: 效果图: 布局: 三个按钮 加上一个Chronometer <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.a

  • c# 实现计时器功能

    场景 在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控. 实现思路是使用Timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作. 实现 但是Timer有三个 1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类里   3.定义在System.Timers.Timer类里 一开始使用的是System.Windows.Forms里面的 System.Windows.Forms.Tim

  • 使用vue实现计时器功能

    本文实例为大家分享了vue实现计时器功能的具体代码,供大家参考,具体内容如下 首先我们要知道setTimeout和setInterval的区别 setTimeout只在指定时间后执行一次,代码如下: <script> //定时器 异步运行 function hello(){ alert("hello"); } //使用方法名字执行方法 var t1 = window.setTimeout(hello,1000); var t2 = window.setTimeout(&qu

随机推荐