c#事件处理程序订阅问题

c#事件处理程序订阅问题,c#,C#,我有一个类a,它定义了一个类似于public event handler OnCommandReply的事件; 我还有另外两个班级订阅了这个活动。但是,当触发事件时,只有一个类接收该事件。我想知道如何使两者都接收被触发的事件 谢谢如果您正确订阅了活动,则应始终同时启动这两个功能。您确定没有使用-=取消订阅活动吗?或者将其设置为空 您是否正确地使用+=订阅了活动 订阅 publisher.RaiseCustomEvent += HandleCustomEvent; 取消订阅: publishe

我有一个类a,它定义了一个类似于public event handler OnCommandReply的事件; 我还有另外两个班级订阅了这个活动。但是,当触发事件时,只有一个类接收该事件。我想知道如何使两者都接收被触发的事件


谢谢

如果您正确订阅了活动,则应始终同时启动这两个功能。您确定没有使用
-=
取消订阅活动吗?或者将其设置为空

您是否正确地使用
+=
订阅了活动

订阅

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的两个实例都需要引发一个事件,以便通知所有侦听器或将事件声明为静态