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