防止委派(而不是事件)导致内存泄漏
本文关键字:内存 泄漏 事件 委派 | 更新日期: 2024-07-23 00:06:48
防止委派导致内存泄漏的最佳做法是什么?对于事件处理程序,我只会为每个注册的处理程序调用-=。我给我的代理人分配了一个"="(等号)。我应该在处理时指定NULL吗?
public delegate int MyDelegate(string message);
public class MyManager MyDelegate
{
public MyDelegate ManagerDelegate;
..
public class Transaction
{
public int DoSomething(string message)
{
//do something
}
public void init()
{
var manager = new MyManager();
manager.ManagerDelegate = this.DoSomething("abc");
实例委托引用一个类实例(在其Target
属性中),因此,如果您将该委托存储在某个位置,无论是事件还是简单委托类型的属性,它都将引用您的原始类。在这方面,这是不是一个事件并不重要。因此,如果你想在另一个类还活着的时候收集你原来的类垃圾,你必须清理。删除事件处理程序以及任何其他委托。如果另一个类先死,那么你原来的类也可能死,所以这取决于你的具体情况。
更新:证明:http://pastebin.com/XcTz76dY