【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • leetcode, LC5: insertion-sort-list[通俗易懂]

    leetcode, LC5: insertion-sort-list[通俗易懂]题目描述使用插入排序对链表进行排序。Sortalinkedlistusinginsertionsort.示例1输入{3,2,4}输出{2,3,4}解题思路new一个新的ListNode作为选择排序好的链表的表头对于原始链表中的每一个结点2.1.寻找新链表中该结点的插入位置2.2插入该结点返回新链表代码实现/***structListNode{* intval;* structListNode*next;

    2022年7月24日
    7
  • C3P0jar包下载方法

    C3P0jar包下载方法百度C3P0下载官网进行下载或者进入下载链接:https://sourceforge.net/projects/c3p0/点击download下载即可进入官网:https://sourceforge.net/在右边搜索框搜索c3p0也能找到…

    2022年5月14日
    138
  • 挖矿程序处理[通俗易懂]

    挖矿程序处理[通俗易懂]记一次工作中遇到得挖矿程序处理首先需要减少中毒得几率,就是不要把ssh密码设得太简单,然后ssl端口号改改,改加的访问次数限制加上,常用的sql,代码管理工具等等port也都改掉,管理员权限账户不要多建挖矿程序特点,cpu占用率贼高300,kill不尽,会出现一些自己不曾安装过的程序,库等挖矿程序一般是杀死不净的,需要找到程序路径,以及自启动的脚本ls/proc/进程号/exe-la删掉相关程序but你会发现,它在其他地方又新建了脚本…

    2022年6月29日
    28
  • QUIC简单介绍

    QUIC简单介绍

    2021年12月16日
    48
  • 什么是网站死链?如何查询网站死链?网站死链怎么解决?[通俗易懂]

    什么是网站死链?如何查询网站死链?网站死链怎么解决?[通俗易懂]网页死链:简单地讲,死链接指原来正常,后来失效的链接。死链接发送请求时,服务器返回404错误页面。死链出现原因1、动态链接在数据库不再支持的条件下,变成死链接。2、某个文件或网页移动了位置,导致指向它的链接变成死链接。3、网页内容更新并换成其他的链接,原来的链接变成死链接。4、网站服务器设置错误5、网站还没有完全做好,就上传到服务器上去了,这样也很多死链的。6、某文件夹名称修改,路

    2022年7月22日
    13
  • JS实现常见数据结构:哈希表[通俗易懂]

    哈希表特点:存储键值对的数据结构,哈希表内部是使用一个hash函数把传入的键转换成一串数字,而这串数字将作为键值对实际的key,通过这个key查询对应的value非常快。哈希表方法:1.add:添加一组键值对。2.remove:删除一组键值对。3.lookup:查找一个键对应的值。

    2022年4月13日
    92

发表回复

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

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