假设我们有以下方法:可以使用lambda作为事件处理程序导致内存泄漏?
private MyObject foo = new MyObject();
// and later in the class
public void PotentialMemoryLeaker(){
int firedCount = 0;
foo.AnEvent += (o,e) => { firedCount++;Console.Write(firedCount);};
foo.MethodThatFiresAnEvent();
}
如果用这种方法的类实例化和PotentialMemoryLeaker
方法被调用多次,我们是否泄漏内存?
在我们完成调用MethodThatFiresAnEvent
之后,有什么办法可以解开这个lambda事件处理程序吗?
正如下面的回答显示,有没有办法解开它没有保存的参考。然而,你可以让它解开本身:http://stackoverflow.com/questions/1747235/weak-event-handler-model-for-use-with-lambdas/1747236#1747236 – Benjol 2009-11-17 07:57:15