相关文章推荐
失落的棒棒糖  ·  Timer 类 ...·  3 月前    · 
一身肌肉的烈马  ·  常州城市空间近期发展规划研究|清华同衡·  7 月前    · 
力能扛鼎的吐司  ·  前置审批的行业类别及批复单位介绍_备案-阿里 ...·  2 年前    · 
个性的草稿本  ·  2018-10-11 ...·  2 年前    · 
彷徨的机器人  ·  《龙与地下城:侠盗荣耀》1080P高清版迅雷 ...·  2 年前    · 
不羁的山羊  ·  成长的奥秘 泠云天天在线·  2 年前    · 
Code  ›  【c#】控制台程序编写计时器「建议收藏」开发者社区
控制台 控制台程序 计时器
https://cloud.tencent.com/developer/article/2069383
重感情的酸菜鱼
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();
 
推荐文章
失落的棒棒糖  ·  Timer 类 (System.Threading) | Microsoft Learn
3 月前
一身肌肉的烈马  ·  常州城市空间近期发展规划研究|清华同衡
7 月前
力能扛鼎的吐司  ·  前置审批的行业类别及批复单位介绍_备案-阿里云帮助中心
2 年前
个性的草稿本  ·  2018-10-11 对称加密、非对称加密、Hash算法看完这篇文章加解密就别蒙了散列函数 加密算法-腾讯云开发者社区-腾讯云
2 年前
彷徨的机器人  ·  《龙与地下城:侠盗荣耀》1080P高清版迅雷下载-行客工作室
2 年前
不羁的山羊  ·  成长的奥秘 泠云天天在线
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号