分离匿名的EventHandler

时间:2012-04-11 20:24:17

标签: c# memory-leaks event-handling

  

可能重复:
  Unsubscribe anonymous method in C#   How do I Unregister 'anonymous' event handler

好的,我可以说我有以下代码:

    private void AttachEvent(AwesomeObject someObject)
    {
        int id = GetCurrentIdValue();
        someUnknownClass.SomeEvent += () => someObject.CreateAwesomeness(id);
    }

(基本上,我只是试图说明需要在this thread中建议的事件处理程序中使用局部变量)。从内存管理的角度来看,我不能从someUnknownClass.SomeEvent中分离出来,因为我没有处理程序的句柄。此外,让我们假设someUnknownClass是第三方类型,因此我无法在该类中添加任何代码以按照建议在内部分离事件。

我的问题是,如何在仍然能够使用匿名方法作为事件处理程序的同时避免内存泄漏?

1 个答案:

答案 0 :(得分:0)

这不可能,不是你使用它们的方式。您可以做的是将该方法分配给变量,并在事件中使用 变量到+-之后。但是通过这种方式,你会失去封闭通常会给你的“自然”感觉。