110,536
社区成员
发帖
与我相关
我的任务
分享
public class Program
{
static Main()
{
Mod mod = new Mod();
mod.DoneSomething += DoneFunc; //可能添加了多个,无法确认
//其实就是EventHandlerList.Dispose是否会,默认执行下,下面的语句,MSDN对这个讲的太少了
//mod.DoneSomething -= DoneFunc;
}
}
public class Mod:IDispose
{
private EventHandlerList _evePool = new EventHandlerList();
private static readonly object _keyDoneEvent = new object();
public EventHandler DoneSomething
{
add{_evePool.AddHandler(_keyDoneEvent,value);}
remove{_evePool.RemoveHandler(_keyDoneEvent,value);}
}
public void Dispose()
{
//清理事件,以达到释放Mod对象的目的
_evePool.Dispose();
}
}
public class Program
{
static Main()
{
Mod mod = new Mod();
mod.DoneSomething += DoneFunc; //可能添加了多个,无法确认
//释放mod对象,正常来说,不能注销掉引用的事件 mod 无法被GC回收
//现在资源比较紧张,我想把 对象 mod回收掉
mod.Dispose();
}
}