我有一个A类,它定义了一个像公共事件EventHandler OnCommandReply这样的事件; 我还有两个订阅该事件的类。但是,当事件被触发时,只有一个接收事件的类。我想知道如何让两个人都接收被解雇的事件。
由于
答案 0 :(得分:1)
我试图重现你的错误,但我不能......这就是我试过的:
public void Main()
{
var a = new A();
var b = new B();
var c = new C();
a.SomethingChanged += b.OnSomethingChanged;
a.SomethingChanged += c.OnSomethingChanged;
a.RaiseSomethingChangedEvent();
}
private class A
{
public event EventHandler SomethingChanged;
public void RaiseSomethingChangedEvent()
{
if(SomethingChanged !=null)
SomethingChanged(this, new EventArgs());
}
}
private class B
{
public void OnSomethingChanged(object sender, EventArgs e)
{
Console.WriteLine("B: Event was raised.");
}
}
private class C
{
public void OnSomethingChanged(object sender, EventArgs e)
{
Console.WriteLine("C: Event was raised.");
}
}
答案 1 :(得分:0)
如果您正确订阅了该事件,则应始终触发两者。您确定不能使用-=
取消订阅该活动吗?或者将其设置为null?
您是否使用+=
正确订阅了活动?
订阅
publisher.RaiseCustomEvent += HandleCustomEvent;
取消注册:
publisher.RaiseCustomEvent -= HandleCustomEvent;
以下是一篇很好的文章:How to: Subscribe to and Unsubscribe from Events (C# Programming Guide)
答案 2 :(得分:0)
在向发布者注册活动订阅者时,请确保不使用=运算符。这样做将用当前订户替换任何/所有当前注册的事件订户。相反,请务必使用+ =运算符将当前订阅者附加到事件处理程序的调用列表中。