zoukankan      html  css  js  c++  java
  • C# 定时器Timer

    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;
                        }
                    }
                }
            }
        }
    

      

  • 相关阅读:
    有关Python,网络,机器学习,深度学习
    Python map使用
    左旋转字符串,翻转字符串
    使用Python创建二叉树,作为调试程序使用
    batchnorm2d函数理解,numpy数据归一化
    和为s的连续正数序列,和为s的两个数字
    判断是否为平衡二叉树
    原生js格式化json的方法
    ace editor 使用教程
    Vue+webpack+echarts+jQuery=demo
  • 原文地址:https://www.cnblogs.com/sanday/p/6973939.html
Copyright © 2011-2022 走看看