是否需要取消注册事件处理程序?

时间:2013-06-04 10:50:44

标签: c# asp.net .net c#-4.0 asp.net-4.0

我看到其他人写的这段代码:

 public class DynamicPageContent : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            // it is necessary to 
            context.BeginRequest += new EventHandler(DynamicPageContent_BeginRequest);
        }
        //actual handler not pasting as it's meaningless for this question
}

如您所见,处理程序已注册但从未注销。这不会造成内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

事件处理可能会造成泄漏,但仅限于某些条件。

需要注意的是订阅对象的生命周期比发布对象更长。

需要注意的是发布对象的生命周期比订阅对象更长。

在这种情况下,它们似乎是同一个对象,然后取消订阅没有必要或没用。这只会使你的代码混乱。