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);
     
  • 相关阅读:
    上海第八中学 shader
    http://www.riemers.net/
    手写板驱动
    使用dos 作为中介实现cpython 和c# 交互
    判断一个点是不是在三角形中 用面积算法
    Python os.chmod
    Python 的stat 模块
    文件格式说明
    win7 一切软件都安装不上 解决 把他卸掉
    执行力
  • 原文地址:https://www.cnblogs.com/skysimblog/p/3474808.html
Copyright © 2011-2022 走看看