Mega Code Archive

 
Categories / C# Tutorial / Delegate
 

Using The Event Keyword

using System; using System.Collections.Generic; using System.Text; using System.Threading;     public class MyEventArgs : EventArgs     {         public readonly int Hour;         public readonly int Minute;         public readonly int Second;         public MyEventArgs(int hour, int minute, int second)         {             this.Hour = hour;             this.Minute = minute;             this.Second = second;         }     }     public delegate void MyHandler(object clock,MyEventArgs timeInformation);     public class Clock     {         private int hour;         private int minute;         private int second;         public event MyHandler SecondChanged;         protected virtual void OnSecondChanged(MyEventArgs e)         {             if (SecondChanged != null)             {                 SecondChanged(this, e);             }         }         public void Run()         {             for (; ; )             {                 System.DateTime dt = System.DateTime.Now;                 if (dt.Second != second){                     MyEventArgs timeInformation =new MyEventArgs(dt.Hour, dt.Minute, dt.Second);                     OnSecondChanged(timeInformation);                 }                 this.second = dt.Second;                 this.minute = dt.Minute;                 this.hour = dt.Hour;             }         }     }     public class ConsoleHandler     {         public void Register(Clock theClock)         {             theClock.SecondChanged += new MyHandler(TimeHasChanged);         }         public void TimeHasChanged(object theClock, MyEventArgs ti)         {             Console.WriteLine("Current Time: {0}:{1}:{2}",ti.Hour.ToString(),ti.Minute.ToString(),ti.Second.ToString());         }     }     public class Test     {         public static void Main()         {             Clock theClock = new Clock();             ConsoleHandler dc = new ConsoleHandler();             dc.Register(theClock);             theClock.Run();         }     }