static void Main (string[] args) { #region timer timerdemo td = New Timerdemo ("Timerdemo", +); Td. Enabled = true; Td. TickEvent + = Testhandler; Thread timer = new Thread (TD. Run); Timer. Start (); #endregion console.readline (); } <summary> ///test events///</summary> static void Testhandler () { Console.WriteLine (DateTime.Now.ToLongTimeString ()); }
public class Timerdemo {//thread name string _threadname; public string ThreadName {get {return _threadname;} Private set {_threadname = value;} }//time interval int _timeinterval; public int TimeInterval {get {return _timeinterval;} set {_timeinterval = value;} }//Current timer is enabled true: Enable false: BOOL _enabled is not enabled; public bool Enabled {get {return _enabled;} set {_enabled = value;} }//events that need to be run at intervals public delegate void Tickeventhandler (); public event Tickeventhandler TickEvent; <summary>///Create a Timer (constructor)///</summary>//<param name= "ThreadName" > Thread name < /param>//<param name= "TimeInterval" > Interval </param> public timerdemo (string threadname, int T imeinterval = Int. MaxValue) {this. ThreadName = ThreadName; This. TimeInterval = TimeInterval; This. Enabled = false; }///<summary>/////</summary> public void Run () {WH Ile (True) {//If the current timer is not enabled, it is detected at every interval if the IF (!this) is enabled. Enabled) {thread.sleep (100); Continue }//Trigger event TickEvent if (tickevent! = null) {tickevent (); }//Hibernate for a certain time, waiting for the Next loop thread.sleep (timeinterval% 100); for (int temp = 0; temp < timeinterval/100; temp++) {thread.sleep (100); if (!this. Enabled) {break; } } } } }