最近发现C#程序初始化时在构造函数中,偶尔出现事件注册不成功。后查资料发现有GetInvocationList 这么一个获取类中的委托链表的函数,
使用方法如下:
1、在需委托的类(Class1)中增加下列的静态函数
public delegate void RequestHandler();
public static event RequestHandler OnRequestHandler;
public static Delegate[] InvocationList()
{
return OnRequestHandler.GetInvocationList();
}
2、在初始化委托事件时进行判断其length:
Class1.OnRequestHandler += new Class1.RequestHandler(RequestHandler);
//进行循环判断
foreach (Delegate dlg in Class1.InvocationList())
{
if (dlg.Method.Name == "RequestHandler")
break;
else
Class1.OnCallRequestHandler += new Class1.RequestHandler(RequestHandler);
}
即可判断事件是否注册成功。