C#自定义基于控制台的Timer实例
程序员文章站
2023-08-17 17:25:54
本文实例讲述了c#自定义基于控制台的timer实现方法。分享给大家供大家参考。具体如下:
一、概述
这里实现了一个自定义类timertest,该类可以模拟一个timer...
本文实例讲述了c#自定义基于控制台的timer实现方法。分享给大家供大家参考。具体如下:
一、概述
这里实现了一个自定义类timertest,该类可以模拟一个timer,经过指定时间间隔执行某个事件。
二、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; } } } } }
三、调用示例
每1000毫秒输出当前的时间
/// <summary> /// 测试用事件 /// </summary> static void testhandler() { //todo console.writeline(datetime.now.tolongtimestring()); } 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.readline(); }
四、运行结果
希望本文所述对大家的c#程序设计有所帮助。