2011-01-28 103 views
0

我目前在C DLL的包装类中使用静态委托,以避免指向不安全函数的委托被垃圾收集。
这工作正常,直到我现在需要支持该类的多个实例。解决方法可能是保留静态委托的列表,但我想找到一个更简单的解决方案。C#:从垃圾回收保存委托(静态无选项)

回答

3

为了防止收集对象,您必须保留对其的引用。

静态类中的静态成员在应用程序生存期内存在。

对于班级成员的实例,根据您的班级设计和项目设计,您可能会采取不同的方法。维护一个静态列表可能不是一个坏主意。

我唯一的问题是你如何能够确定代表正在被收集。因为,如果你能够访问它,那么你一定保留了它的参考。在这种情况下,它一定留在记忆里。

+4

您将看到由应用程序崩溃发生的垃圾收集;-) – weismat 2011-01-28 08:40:45

1

我认为你犯了一个错误:静态变量存在于应用程序的整个生命周期中,当应用程序运行时它们永远不会被GCed。

+0

基本上我的课曾经是一个单身 - 所以静态工作。现在我的要求是支持多个实例,因此静态不再是一个选项。 – weismat 2011-01-28 08:39:38