static void Main(string[] args)        {            #region  定时器            TimerDemo td = new TimerDemo("TimerDemo", 1000);            td.Enabled = true;            td.TickEvent += TestHandler;            Thread timer = new Thread(td.Run);            timer.Start();            #endregion            Console.ReadLine();        }        /// <summary>        /// 测试用事件        /// </summary>        static void TestHandler()        {            Console.WriteLine(DateTime.Now.ToLongTimeString());        }

  

public class TimerDemo        {        //线程名        string _ThreadName;        public string ThreadName        {            get { return _ThreadName; }            private set { _ThreadName = value; }        }        //时间间隔        int _TimeInterval;        public int TimeInterval        {            get { return _TimeInterval; }            set { _TimeInterval = value; }        }        //当前计时器是否启用 true:启用 false:不启用        bool _Enabled;        public bool Enabled        {            get { return _Enabled; }            set { _Enabled = value; }        }        //每隔一段时间需要运行的事件        public delegate void TickEventHandler();        public event TickEventHandler TickEvent;        /// <summary>        /// 建立一个计时器(构造函数)        /// </summary>        /// <param name="ThreadName">线程名</param>        /// <param name="TimeInterval">时间间隔</param>        public TimerDemo(string ThreadName, int TimeInterval = int.MaxValue)        {            this.ThreadName = ThreadName;            this.TimeInterval = TimeInterval;            this.Enabled = false;        }        /// <summary>        /// 定期执行事件        /// </summary>        public void Run()        {            while (true)            {                //如果当前计时器并未启用,则每隔一段时间检测是否被启用                if (!this.Enabled)                {                    Thread.Sleep(100);                    continue;                }                //触发事件TickEvent                if (TickEvent != null)                {                    TickEvent();                }                //休眠一定的时间,等待下一个循环                Thread.Sleep(TimeInterval % 100);                for (int temp = 0; temp < TimeInterval / 100; temp++)                {                    Thread.Sleep(100);                    if (!this.Enabled)                    {                        break;                    }                }            }        }    }

更多相关文章

  1. 总结委托和事件的联系和区别
  2. type=file的change事件只能执行一次的问题及解决方法实例
  3. Asp.NET页面事件加载的顺序是什么样的
  4. 简要分析Unity计时器脚本Timer的用法(附代码)
  5. c#如何在程序中定义和使用自定义事件
  6. 在XML布局里给View设置点击事件的案例分享
  7. CSS3超炫酷圆形计时器进度条动画
  8. Vue.js流程图插件 可自定义流程节点事件
  9. Node.js 事件循环完整指南[每日前端夜话0x9F]

随机推荐

  1. android 自定义对话框 背景透明
  2. android中利用itext读取pdf文档
  3. android intent.setType指定浏览本地多种
  4. Android(安卓)EditText得到和失去焦点时,
  5. Android推荐资源
  6. Android 获取设备各种信息以及其它
  7. 自己定义的Tabhost
  8. 修改不启动Launcher导致开机广播无法发出
  9. Android wifi提示已连接但是无法访问网络
  10. Android 双开沙箱 VirtualApp 源码分析(二