C#事件处理程序永远不会获得订阅者

时间:2018-10-01 15:05:05

标签: c# .net event-handling

我有一个控制器类和一个经理类。

我希望我的经理类从我的控制器调用一个函数来触发事件。

我的控制器看起来像这样:

public class Controller{
    public Controller(Mgr mgr)
    {
        m_mgr = mgr;
        m_mgr.schedulerReload += reloadScheduler;
    }

    void reloadScheduler(object sender, EventArgs e)
    {
        ReloadSchedulerQueue();
    }
}

其中ReloadSchedulerQueue是我想从事件中触发的功能。

我的经理班看起来像这样

public class Manager{
    public event EventHandler schedulerReload;

    public void somefunction() {
      //do something
      schedulerReload(this, EventArgs.Empty);
    }
}

每当我运行此命令时,我都可以看到schedulerReload事件正在获取空引用异常,我假设是因为没有人订阅我的事件。但是,在逐步执行代码时,我可以清楚地看到构造函数和代码行

m_mgr.schedulerReload += reloadScheduler;
在调用somefunction()之前,

显然被多次击中。我知道我可以通过在调用事件处理程序之前对其进行检查来处理此异常,但是我不知道为什么我的事件处理程序未得到订阅。

我在这里想念什么?

0 个答案:

没有答案