如果我有经典的方法来注册和取消注册事件(= – =),还有一种方法可以查看是否现在注册了某些内容吗?
假设我有两种方法可以在一个Timer上注册.如果已经在.Elapsed注册了某些内容,我不想要任何其他内容进行注册(并且不希望多次注册).
有没有办法查找当前注册的特定事件的方法?
解决方法
如果你真的想要这样的行为,我认为最好的选择是使用重载add {}和remove {}功能.
public class Foo { private EventHandler<ElapsedEventArgs> _elapsed; public EventHandler<ElapsedEventArgs> Elapsed { add { if( _elapsed == null ) _elapsed += value; else throw new InvalidOperationException ("There is already an eventhandler attached to the Elapsed event."); } remove { _elapsed -= value; } } }