我想确认一些事情——当我将一个方法注册为一个事件的订阅者时,就像这样:
_serviceContext.ReadingEntity += new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
如果我不希望在触发事件时继续调用该方法,我需要从事件的订阅中取消注册该方法,如下所示:
_serviceContext.ReadingEntity -= new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
当我将委托注册为事件的订阅者时,如下所示:
public guy ThisMethod()
{
_serviceContext.ReadingEntity += delegate(object sender, ReadingWritingEntityEventArgs e)
{
};
}
无法通过该方法从订阅者列表中取消注册该委托。因此,我假设此注册的范围仅限于其注册的方法 - 即,如果 _serviceContext.ReadingEntity 事件在 ThisMethod 调用的方法中被触发,则此注册已经过期,并且委托中的代码不会跑。它是否正确?
谢谢!
ps 我意识到注册事件处理程序的第一个“长”方式也有范围限制,但我对此有点模糊。然而,我的主要问题是委托注册是否会在上述方法之外继续存在。