首页 新闻 会员 周边

一个可能存在内存泄露的问题

0
悬赏园豆:5 [已解决问题] 解决于 2010-01-21 09:20

一个BS型程序,  因为要做联动的效果(比如省份和城市),  我做了一个用户控件, 控件中里有一个公共事件:  

 public delegate void PlayGame(ItemEventArgs e);

 public event PlayGame ItemChangEvent;

在A页面时就注册这个事件,    protected void Page_Load(object sender, EventArgs e)
        {

 // 注册事件
            this.cboExCityName.ItemChangEvent += new MulSelectControl.PlayGame(ItemChang);

}

 

我在Eaglt页面上说"最常见的情况就是给对象添加了事件处理函数,但当不再使用该对象时却没有将该函数从对象的事件handler中减掉。",  这种情况会发生内存泄露, 

 

我不知道我这种写法会不会有这种情况,   大家来谈谈...

 

 

问题补充: 最好能给出解决方案,, 谢谢. 大家不要问我为什么这样做,为什么不用第三方控件或其他的方式, 我只想了解这个问题会不会有内存泄露 另附Eagle的页面地址:http://www.cnblogs.com/eaglet/archive/2008/09/05/1285169.html
不若相忘于江湖的主页 不若相忘于江湖 | 初学一级 | 园豆:51
提问于:2010-01-20 11:08
< >
分享
最佳答案
0

应该不会造成内存泄漏。除非 this.cboExCityName 一直不被释放,但这是不可能的。其实事件引起的内存泄漏问题更多的是出现在 winform 程序中,asp.net 程序一般是不会出现的,除非你用静态变量。

另外你那个文章地址好像不太对,是不是这篇文章?

http://www.cnblogs.com/eaglet/archive/2009/01/07/1371060.html

收获园豆:5
eaglet | 专家六级 |园豆:17139 | 2010-01-20 12:12
eaglet:除非你用静态变量? 我觉得在BS中静态变量不会有内存泄漏吧。 我在BS中也有很多静态变理,麻烦你看看。 /// <summary> /// 获取条件的销售部门 /// </summary> public static IList<NameValuePair<int, string>> LsSaleDepartByWhere() { // 从CGeneralDAL类中的静态方法中取到数据 IList<NameValuePair<int, string>> lsNV = CGeneralDAL.GetSaleDepart(""); return lsNV; } 不知道上面会不会有泄漏, 我觉得不会。。。 不知是否正确。
不若相忘于江湖 | 园豆:51 (初学一级) | 2010-01-20 14:12
不是说用静态变量就一定内存泄漏,我的意思是如果你把this.cboExCityName赋值给静态变量,这样不但 cboExCityName 无法释放,ItemChang 所对应的对象也无法释放,这时就会泄漏,其实也不是泄漏,只是内存没有被正常释放。
eaglet | 园豆:17139 (专家六级) | 2010-01-21 07:20
@eaglet: 谢谢你的回答.. Thanks.
不若相忘于江湖 | 园豆:51 (初学一级) | 2010-01-21 09:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册