c#事件处理程序订阅问题
我有一个类a,它定义了一个类似于public event handler OnCommandReply的事件; 我还有另外两个班级订阅了这个活动。但是,当触发事件时,只有一个类接收该事件。我想知道如何使两者都接收被触发的事件c#事件处理程序订阅问题,c#,C#,我有一个类a,它定义了一个类似于public event handler OnCommandReply的事件; 我还有另外两个班级订阅了这个活动。但是,当触发事件时,只有一个类接收该事件。我想知道如何使两者都接收被触发的事件 谢谢如果您正确订阅了活动,则应始终同时启动这两个功能。您确定没有使用-=取消订阅活动吗?或者将其设置为空 您是否正确地使用+=订阅了活动 订阅 publisher.RaiseCustomEvent += HandleCustomEvent; 取消订阅: publishe
谢谢如果您正确订阅了活动,则应始终同时启动这两个功能。您确定没有使用
-=
取消订阅活动吗?或者将其设置为空
您是否正确地使用+=
订阅了活动
订阅
publisher.RaiseCustomEvent += HandleCustomEvent;
取消订阅:
publisher.RaiseCustomEvent -= HandleCustomEvent;
这是一篇关于这方面的好文章:我试图重现你的错误,但我无法。。。这就是我所尝试的:
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.");
}
}
向发布服务器注册事件订阅服务器时,请确保不使用=运算符。这样做将用当前订阅服务器替换任何/所有当前注册的事件订阅服务器。相反,请确保使用+=运算符将当前订阅服务器追加到事件处理程序的调用列表中。您确定两个类都订阅了事件吗?当您在订阅发生的相应行上放置断点时,是否已到达断点?能否提供一些代码?订阅happened@BigToch我们需要一些代码来帮助你。我所做的是使用两个类A的实例来订阅事件。好的,但是,类A的两个实例都需要引发一个事件,以便通知所有侦听器或将事件声明为静态