c# - C# 事件处理程序永远不会获得订阅者
问题描述
我有一个控制器类和一个管理器类。
我希望我的经理类从我的控制器调用一个函数来触发一个事件。
我的控制器看起来像这样:
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() 之前明显被多次命中。我知道我可以通过在调用它之前检查我的事件处理程序来处理这个异常,但我不知道为什么我的事件处理程序没有被订阅。
我在这里想念什么?
解决方案
推荐阅读
- javascript - 限制高图表以显示原始值而不是范围选择器的平均值
- c - char *和char []的scanf之间的区别?
- database - 将文本/数据转换为 x、y 数组?
- bash - 如何在启动时更改 Linux 的默认目录
- swift - 如何在没有 xcode 的情况下删除沙箱
- ruby-on-rails - 类型字符变化的值太长(255)-carrierwave
- java - Java Hibernate LazyInitializationException 仅在仅与 JUnit 一起运行时出现
- r - R 控制台语言设置
- python-sphinx - 狮身人面像警告:“重复的替换定义名称” - 错误在哪里?
- parsing - Lexer 是否应该能够区分“变量”中包含的语法标记和实际的语法标记