我有
public delegate void AdministrationEventHandler(object sender, AdministrationEventArgs e);
public static event AdministrationEventHandler MainAdministrationEventHandler;
这是我的wcf服务中的主要事件处理程序。 我也
private void MyEventHandler(object sender, AdministrationEventArgs e)
{
//code
}
我添加新元素
AdministrationEventHandler userToAddEventHandler = new AdministrationEventHandler(MyEventHandler);
然后
MainAdministrationEventHandler += userToAddEventHandler;
在我的Broadcast()
方法中,我为每个处理程序调用{{1}}。
我想根据MyEventHandler
参数调用Broadcast()
。
我尝试制作类似AdministrationEventArgs e
列表的内容,并为此列表的适当元素调用MainAdministrationEventHandler
,但它不起作用。
我通过Broadcast()
是否有可能在MainAdministrationEventHandler.GetInvocationList()
中获取e
之后检查GetInvocationList()
参数?
或我怎么能以其他方式致电Broadcast()
给合适的处理程序?
答案 0 :(得分:3)
什么是合适的处理程序?因为根据您的代码,您只能将AdministrationEventHandler
类型的处理程序分配给该事件。
此外,从GetInvocationList()
返回的列表仅包含要调用的处理程序。这次还没有被调用过,你需要调用它们并将e
传递给它们。
这样的事情应该做:
AdministrationEventArgs args = new AdministrationEventArgs();
Delegate[] dels = MainAdministrationEventHandler.GetInvocationList();
if (dels != null)
foreach (Delegate handler in dels)
handler.Invoke(this, args);