c# - 是否需要注销事件处理程序?

标签 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
}

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

最佳答案

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

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

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

在这种情况下,它们看起来是同一个对象,因此取消订阅是没有必要或没有用的。那只会让你的代码变得困惑。

关于c# - 是否需要注销事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915923/

相关文章:

c# 字符串到我可以从中调用函数的类

asp.net - 我需要一个演练或如何在Windows Azure上部署ASP.NET网站的步骤

c# - 在其他页面中找到控件

c# - 确定进程正在使用哪个网络适配器

c# - 如何在.NET中获取磁盘的分区UUID

c# - 绑定(bind)源刷新

c# - 使用 Linq 在 View 中显示字段名称

c# - NSubstitute - 收到异步 - “call is not awaited” 警告

c# - 找出所有相同的答案

c# - 创建唯一图像(GUID 到图像)