Using The Event Keyword : delegate event « delegate « C# / CSharp Tutorial






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();
        }
    }








9.8.delegate event
9.8.1.Creating a new event.
9.8.2.delegate and event
9.8.3.A very simple event demonstration.
9.8.4.An event multicast demonstration
9.8.5.Individual objects receive notifications when instance event handlers are used
9.8.6.A static method is used as an event handler
9.8.7.Creating an event.
9.8.8.Retrieving Even-Numbered Events with the .NET Delegate Convention
9.8.9.Retrieving Even-Numbered Events
9.8.10.Advanced Event
9.8.11.Using The Event Keyword
9.8.12.delegate and Event handler