相关文章推荐
千杯不醉的香槟  ·  日晷和漏刻:那些古老时光的计时器·  1 月前    · 
千杯不醉的香槟  ·  古人如何计时-光明日报-光明网·  1 月前    · 
坏坏的羽毛球  ·  土耳其人的祖先真是中国的匈奴人或突厥人?答案 ...·  5 月前    · 
想表白的金鱼  ·  MacBook Air 13 ...·  5 月前    · 
直爽的围巾  ·  2015年第三十七屆威廉瓊斯盃國際籃球邀請賽 ...·  6 月前    · 
乖乖的生姜  ·  概述二十八都古鎮奇異景觀·  6 月前    · 
难过的路灯  ·  宰相肚里能撑船,指的是哪个宰相啊? - ...·  1 年前    · 
小百科  ›  【c#】子系统程序编纂计时器「建议收藏品」-腾讯云开发者社区-腾讯云
控制台 控制台程序 计时器
重感情的酸菜鱼
2 年前
全栈程序员站长
0 篇文章

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

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
全栈程序员站长
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > 【c#】控制台程序编写计时器「建议收藏」

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

作者头像
全栈程序员站长
发布 于 2022-08-10 09:36:01
540 0
发布 于 2022-08-10 09:36:01
举报

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

用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#】控制台程序编写计时器「建议收藏」
【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();
 
推荐文章
千杯不醉的香槟  ·  日晷和漏刻:那些古老时光的计时器
1 月前
千杯不醉的香槟  ·  古人如何计时-光明日报-光明网
1 月前
坏坏的羽毛球  ·  土耳其人的祖先真是中国的匈奴人或突厥人?答案很滑稽,也很讽刺_ ...
5 月前
想表白的金鱼  ·  MacBook Air 13 吋及MacBook Air 15 吋- Apple (香港)
5 月前
直爽的围巾  ·  2015年第三十七屆威廉瓊斯盃國際籃球邀請賽- 台灣籃球維基館
6 月前
乖乖的生姜  ·  概述二十八都古鎮奇異景觀
6 月前
难过的路灯  ·  宰相肚里能撑船,指的是哪个宰相啊? - 杨沐梓的回答- 知乎
1 年前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南