【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#】控制台程序编写计时器「建议收藏」

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 《Effective C++ 》学习笔记——规定10「建议收藏」

    《Effective C++ 》学习笔记——规定10

  • mysql实战34讲_有效教学十讲读书心得

    mysql实战34讲_有效教学十讲读书心得此文为极客时间:MySQL实战45讲的4、5、9、10、11、15、18节索引相关部分的总结一、Innodb索引模型1.主键/非主键索引的区别每个索引在Innodb中都是一颗B+树,其中根据索

  • pycharm怎么创建虚拟环境_pycharm选择运行环境

    pycharm怎么创建虚拟环境_pycharm选择运行环境配置虚拟环境的必要性1、保持项目的独立性。为每一个项目建立一个独立的运行环境,不与其他项目之间产生环境冲突。(比如其他项目加载或删除依赖环境软件时,互不影响)通俗一点就是,每人一个单间,大家在自己的房间内可以各干各的。2、提升项目开机加载速度。在独立性的前提下,虚拟环境可以选择继承已有的公共环境中的依赖包,也可以完全新建一个空间,也可以将自己的依赖环境共享给其他项目。总之,保证每个项目的虚…

  • 3DE平台基础_系统架构师多少分过

    3DE平台基础_系统架构师多少分过3DE平台系统架构

  • 反掩码的作用是什么?通配符掩码的作用是什么?—Vecloud[通俗易懂]

    反掩码的作用是什么?通配符掩码的作用是什么?—Vecloud[通俗易懂]反掩码即路由器使用的通配符掩码与源或目标地址一起来分辨匹配的地址范围,跟子网掩码刚好相反。它像子网掩码告诉路由器IP地址的哪一位属于网络号一样,通配符掩码告诉路由器为了判断出匹配,它需要检查IP地址中的多少位。这个地址掩码对使我们可以只使用两个32位的号码来确定IP地址的范围。这是十分方便的,因为如果没有掩码的话,你不得不对每个匹配的IP客户地址加入一个单独的访问列表语句。这将造成很多额外的输入和路由器大量额外的处理过程。所以地址掩码对相当有用。在子网掩码中,将掩码的一位设成1表示IP地址对应的位.

  • HTML导航条的制作

    HTML导航条的制作导航条的制作HTML代码:<nav>  <ul>    <li>      <ahref=”#”></a>    </li>    <li>      <ahref=”#”></a>    </li>  </ul></na…

发表回复

您的电子邮箱地址不会被公开。

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