天天看點

多點傳播委托執行個體

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ComponentModel;

namespace DelegateTest

{

    class Program

    {

        static void Main(string[] args)

        {

            MailManager ok = new MailManager();

            ok.EventHander += new MailManager.MailMesgEventHandler(ok_EventHander);

            ok.Run();

            Console.WriteLine("----------------Next---------------");

            ok.EventHander += new MailManager.MailMesgEventHandler(ok_EventHander2);

            ok.Run();

            Console.WriteLine("----------------Next---------------");

            ok.EventHander -= new MailManager.MailMesgEventHandler(ok_EventHander);

            ok.Run();

            Console.ReadKey();

        }

        static void ok_EventHander()

        {

            Console.WriteLine("1");

        }

        static void ok_EventHander2()

        {

            Console.WriteLine("2");

        }

    }

    class MailManager

    {

        //定義一個委托類

        public delegate void MailMesgEventHandler();

        private static EventHandlerList Events = new EventHandlerList();

        private static object obj = new object();

        public event MailMesgEventHandler EventHander

        {

            add

            {

                Events.AddHandler(obj, value);

            }

            remove

            {

                Events.RemoveHandler(obj, value);

            }

        }

        public void Run()

        {

            MailMesgEventHandler method = (MailMesgEventHandler)Events[obj];

            if (method != null)

                method();

        }

    }

}

//1

//----------------Next---------------

//1

//2

//----------------Next---------------

//2