zoukankan      html  css  js  c++  java
  • 封装Timer

    System.Timers.Timer,System.Timers.Timer在使用的过程中需要:

    1、构造函数不同,构造函数可以什么事情也不做,也可以传入响应间隔时间:System.Timers.Timer timer = new System.Timers.Timer(10);

    2、设置响应事件的响应函数:timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);

    3、调用 timer.Start()或者timer.Enabled = true来启动它, timer.Start()的内部原理还是设置timer.Enabled = true

    4、调用 timer.Stop()或者timer.Enabled = false来停止引发Elapsed事件, timer.Stop()的内部原理还是设置timer.Enabled = false,最重要的是timer.Enabled = false后会取消线程池中当前等待队列中剩余任务的执行。

    看起来还有点麻烦,那我们就尝试封装一个自己的Timer类,在内部实现Timer。代码如下:

    public class MyTimer
        {
            private System.Timers.Timer timeOut = new System.Timers.Timer();
            public delegate void Delegate_TimeOut(object tag);
            public event Delegate_TimeOut delegate_timeOut;
            private object tag;
    
            public MyTimer(double duration)
            {
                timeOut.Interval = duration;
                timeOut.Elapsed += new System.Timers.ElapsedEventHandler(timeOut_Elapsed);
            }
    
            public void Start(object o)
            {
                this.tag = o;
                timeOut.Enabled = true;
                timeOut.Start();
            }
    
            public void Stop()
            {
                timeOut.Enabled = false;
                timeOut.Stop();
            }
    
            ~MyTimer()
            {
                timeOut.Elapsed -= new System.Timers.ElapsedEventHandler(timeOut_Elapsed);
                timeOut.Close();
            }
    
            private void timeOut_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                //do what you want to do
                delegate_timeOut(tag);
            }
        }

    使用:

    MyTimer myTimer = new MyTimer(2000);
    myTimer.delegate_timeOut += new MyTimer.Delegate_TimeOut(overTime);//overTime 为具体实现

    myTimer.Start(null);
     
  • 相关阅读:
    Maven跳过测试
    Maven教程
    使用订单号加锁
    SpringMVC重定向路径中带中文参数
    并发文章
    maven clean插件使用进阶
    线程池基础
    Session中短信验证码设置有效时间
    Linux命令
    下载并安装Cent OS 6.5
  • 原文地址:https://www.cnblogs.com/skysimblog/p/3474808.html
Copyright © 2011-2022 走看看