C#自定義基于控制臺(tái)的Timer實(shí)例
本文實(shí)例講述了C#自定義基于控制臺(tái)的Timer實(shí)現(xiàn)方法。分享給大家供大家參考。具體如下:
一、概述
這里實(shí)現(xiàn)了一個(gè)自定義類TimerTest,該類可以模擬一個(gè)Timer,經(jīng)過指定時(shí)間間隔執(zhí)行某個(gè)事件。
二、TimerTest類
//定時(shí)器類
class TimerTest
{
//線程名
string _ThreadName;
public string ThreadName
{
get { return _ThreadName; }
private set { _ThreadName = value; }
}
//時(shí)間間隔
int _TimeInterval;
public int TimeInterval
{
get { return _TimeInterval; }
set { _TimeInterval = value; }
}
//當(dāng)前計(jì)時(shí)器是否啟用 true:?jiǎn)⒂?false:不啟用
bool _Enabled;
public bool Enabled
{
get { return _Enabled; }
set { _Enabled = value; }
}
//每隔一段時(shí)間需要運(yùn)行的事件
public delegate void TickEventHandler();
public event TickEventHandler TickEvent;
/// <summary>
/// 建立一個(gè)計(jì)時(shí)器(構(gòu)造函數(shù))
/// </summary>
/// <param name="ThreadName">線程名</param>
/// <param name="TimeInterval">時(shí)間間隔</param>
public TimerTest(string ThreadName, int TimeInterval = int.MaxValue)
{
this.ThreadName = ThreadName;
this.TimeInterval = TimeInterval;
this.Enabled = false;
}
/// <summary>
/// 定期執(zhí)行事件
/// </summary>
public void Run()
{
while (true)
{
//如果當(dāng)前計(jì)時(shí)器并未啟用,則每隔一段時(shí)間檢測(cè)是否被啟用
if (!this.Enabled)
{
Thread.Sleep(100);
continue;
}
//觸發(fā)事件TickEvent
if (TickEvent != null)
{
TickEvent();
}
//休眠一定的時(shí)間,等待下一個(gè)循環(huán)
Thread.Sleep(TimeInterval % 100);
for (int temp = 0; temp < TimeInterval / 100; temp++)
{
Thread.Sleep(100);
if (!this.Enabled)
{
break;
}
}
}
}
}
三、調(diào)用示例
每1000毫秒輸出當(dāng)前的時(shí)間
/// <summary>
/// 測(cè)試用事件
/// </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();
}
四、運(yùn)行結(jié)果

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C# WinForm-Timer控件的使用
- c# 區(qū)分幾種定時(shí)器(timer)
- C#用timer實(shí)現(xiàn)背單詞小程序
- 詳解C#中的System.Timers.Timer定時(shí)器的使用和定時(shí)自動(dòng)清理內(nèi)存應(yīng)用
- C#中Timer使用及解決重入問題
- [C#].NET中幾種Timer的使用實(shí)例
- C#中自定義高精度Timer定時(shí)器的實(shí)例教程
- 詳解C#中的定時(shí)器Timer類及其垃圾回收機(jī)制
- C#中timer定時(shí)器用法實(shí)例
- C#使用timer實(shí)現(xiàn)的簡(jiǎn)單鬧鐘程序
- C#使用timer定時(shí)在屏幕上輸出信息的方法
- C#中的Timer和DispatcherTimer使用實(shí)例
- C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
- c#各種Timer類的區(qū)別與用法介紹
- C#中timer類的用法總結(jié)
- C#中的三種定時(shí)計(jì)時(shí)器Timer用法介紹
相關(guān)文章
C#中foreach原理以及模擬的實(shí)現(xiàn)
這篇文章主要介紹了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下2014-10-10
c# Newtonsoft 六個(gè)值得使用的特性(上)
這篇文章主要介紹了c# Newtonsoft 六個(gè)值得使用的特性,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-06-06
C#面向?qū)ο笤O(shè)計(jì)原則之組合/聚合復(fù)用原則
這篇文章介紹了C#面向?qū)ο笤O(shè)計(jì)原則之組合/聚合復(fù)用原則,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
C# WPF實(shí)現(xiàn)的語(yǔ)音播放自定義控件
這篇文章主要介紹了C# WPF實(shí)現(xiàn)的語(yǔ)音播放自定義控件,幫助大家更好的理解和學(xué)習(xí)使用c# WPF技術(shù),感興趣的朋友可以了解下2021-04-04
C#基于自定義事件EventArgs實(shí)現(xiàn)發(fā)布訂閱模式
分享我在工作中遇到的多線程下導(dǎo)致RCW無法釋放的問題

