System.Timers.Timer クラスのデフォルトの Elapsed イベントをオーバーライドして、必要に応じてすべてのイベント リスナーを簡単に削除できるようにしたいと考えています。この質問からのホルヘの答えを使用して、次のことを思いつきました
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 メンバーが割り当てられていることがわかります。ただし、イベント ハンドラーが実際に実行されるのを確認できません。これを正しく設定しましたか?