【c#】控制台程序编写计时器「建议收藏」

【c#】控制台程序编写计时器「建议收藏」【c#】控制台程序编写计时器

大家好,又见面了,我是你们的朋友全栈君。

用System.Timers类实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace ConsoleApplication3
{
   class Program
   {
       static void Main(string[] args)
       {
           Timer t = new Timer();
           t.Elapsed += new ElapsedEventHandler(OnTimedEvent);
           t.Interval = 1000;
           t.Enabled = true;
           Console.Read();
       }

       private static void OnTimedEvent(object source, ElapsedEventArgs e)
       {
           Console.Clear();
           Console.WriteLine(DateTime.Now);
       }
   }
} 

运行效果:

【c#】控制台程序编写计时器「建议收藏」

用线程实现

TimerTest类:

class TimerTest
    {
        //线程名
        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 TimerTest(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;
                    }
                }
            }
        }
    }

调用程序:

 static void Main(string[] args)
        {           
            TimerTest tt = new TimerTest("timer_test",1000);
            tt.Enabled = true;
            tt.TickEvent += TestHandler;
            Thread timer = new Thread(tt.Run);
            timer.Start();
            Console.ReadKey();
        }

        static void TestHandler()
        {
            Console.WriteLine(DateTime.Now.ToLongTimeString());
        }

运行效果:

【c#】控制台程序编写计时器「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105680.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VS2019 为什么我的C++程序不能在别人电脑运行

    VS2019 为什么我的C++程序不能在别人电脑运行

    2021年11月23日
    46
  • idea 全局查找快捷键

    idea 全局查找快捷键对的

    2022年6月29日
    87
  • java log4j 配置文件_[Java教程]log4j配置文件详解

    java log4j 配置文件_[Java教程]log4j配置文件详解[Java教程]log4j配置文件详解02016-07-2523:00:18在开发中经常会碰到日志,网上关于日志的框架也很多,像log4j、self4j、common-logging等,下面对log4j进行介绍。log4j是java开发的日志框架,具有低侵入的特点,其重点使用的部分是log4j的配置文件,有两格式的配置文件,一种###setloglevels###log…

    2022年9月30日
    3
  • 求和符号的运用_求和符号的性质

    求和符号的运用_求和符号的性质文章向导从单重求和谈起(定义与基本性质)多重求和(二重情况)求和的实际应用(等比级数)引言:  求和符号经常活跃于数学或工程实际问题中,特别是处于多重求和情况时,连用的求和符号存在运算的优先顺序,有时我们可以直接互换不同求和符号之间的位置,而有时不同的位置则代表不同的求和意义。因此,关于求和符号∑的问题还是很有必要进行细致讨论一番。一、从单重求和谈起  我们通过一个例子来回顾下求…

    2022年10月12日
    2
  • springboot启动报错Logbook

    springboot启动报错Logbookspringboot 启动报错 2018 11 1701 09 15 214WARN944 main ationConfigE Exceptionenc cancellingre org sp

    2025年6月1日
    3
  • python保存两位小数的几种方法,python2保留小数

    python保存两位小数的几种方法,python2保留小数python保存两位小数的几种方法文章目录:一、保留两位小数且做四舍五入处理1、使用字符串格式化2、使用python内置的round()函数3、使用python内置的decimal模块二、保留两位小数且不做四舍五入处理1、使用序列中的切片2、使用re正则匹配模块一、保留两位小数且做四舍五入处理1、使用字符串格式化>>>x=3.1415926>&…

    2022年8月11日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号