我想覆盖 System.Timers.Timer 类的默认 Elapsed 事件,以便能够在需要时轻松删除所有事件侦听器。使用 Jorge 对这个问题的回答,我想出了以下内容
class CustomTimer : System.Timers.Timer {
List<ElapsedEventHandler> delegates = new List<ElapsedEventHandler>();
private new event ElapsedEventHandler _elapsed;
public new event ElapsedEventHandler Elapsed {
add {
_elapsed += value;
delegates.Add(value);
}
remove {
_elapsed -= value;
delegates.Remove(value);
}
}
public void RemoveAllEvents() {
foreach (ElapsedEventHandler e in delegates) {
_elapsed -= e;
}
delegates.Clear();
}
}
当我运行正在执行的服务时,我可以跟踪查看是否分配了私有 Elapsed 成员。但是我无法看到事件处理程序实际执行。我设置正确了吗?