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#法式設計有所贊助。