I want to override the default Elapsed event for the System.Timers.Timer class to easily be able to remove all event listeners when desired. Using Jorge's answer from this question, I came up with the following
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();
}
}
When I run the service that this is executing in, I can trace through to see that the private Elapsed member is being assigned. However I'm not able to see the event handler actually execute. Did I set this up correctly?