C#自界說基於掌握台的Timer實例。本站提示廣大學習愛好者:(C#自界說基於掌握台的Timer實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#自界說基於掌握台的Timer實例正文
本文實例講述了C#自界說基於掌握台的Timer完成辦法。分享給年夜家供年夜家參考。詳細以下:
1、概述
這裡完成了一個自界說類TimerTest,該類可以模仿一個Timer,經由指准時間距離履行某個事宜。
2、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;
}
}
}
}
}
3、挪用示例
每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();
}
4、運轉成果

願望本文所述對年夜家的C#法式設計有所贊助。