我有
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()
方法中,我为每个处理程序调用MyEventHandler
。我想根据AdministrationEventArgs e
论点打电话给Broadcast()
。
我试图制作类似MainAdministrationEventHandler
列表的东西,并调用Broadcast()
以获取此列表的适当元素,但它不起作用。
我正在通过MainAdministrationEventHandler.GetInvocationList()
获得所有处理程序
GetInvocationList()
e
参数后检查它?
或者我如何以其他方式将Broadcast()
调用给合适的处理程序?
什么是合适的处理程序?因为根据您的代码,您只能将类型为 AdministrationEventHandler
的处理程序分配给该事件。
此外,从GetInvocationList()
返回的列表仅包含要调用的处理程序。这次尚未调用它们,您需要调用它们并将e
传递给它们。
像这样的事情应该做:
AdministrationEventArgs args = new AdministrationEventArgs();
Delegate[] dels = MainAdministrationEventHandler.GetInvocationList();
if (dels != null)
foreach (Delegate handler in dels)
handler.Invoke(this, args);