我看到这段代码是别人写的:

 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
}


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

最佳答案

事件处理可能会导致泄漏,但仅在某些情况下会发生泄漏。

需要注意的是,订阅对象的寿命比发布对象的寿命长。

需要注意的是,发布对象的寿命比订阅对象的寿命长。

在这种情况下,它们似乎是同一对象,因此取消订阅是不必要或有用的。那只会使您的代码混乱。

10-04 18:50