我有
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
。我想根据
Broadcast()
参数调用AdministrationEventArgs e
。我试图制作类似于
MainAdministrationEventHandler
的列表,并为该列表的适当元素调用Broadcast()
,但是它不起作用。我正在通过
MainAdministrationEventHandler.GetInvocationList()
获取所有处理程序在
e
中获取GetInvocationList()
参数后是否可以检查?或如何以其他方式调用
Broadcast()
合适的处理程序? 最佳答案
什么是合适的处理程序?因为根据您的代码,您只能将AdministrationEventHandler
类型的处理程序分配给该事件。
另外,从GetInvocationList()
返回的列表仅包含要调用的处理程序。这次尚未调用它们,您需要调用它们并将e
传递给它们。
这样的事情应该做:
AdministrationEventArgs args = new AdministrationEventArgs();
Delegate[] dels = MainAdministrationEventHandler.GetInvocationList();
if (dels != null)
foreach (Delegate handler in dels)
handler.Invoke(this, args);
关于c# - 在GetInvocationList()之后获取合适的eventHandler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8512018/