我目前在C DLL的包装类中使用静态委托,以避免指向不安全函数的委托被垃圾收集。
这工作正常,直到我现在需要支持该类的多个实例。解决方法可能是保留静态委托的列表,但我想找到一个更简单的解决方案。C#:从垃圾回收保存委托(静态无选项)
0
A
回答
3
为了防止收集对象,您必须保留对其的引用。
静态类中的静态成员在应用程序生存期内存在。
对于班级成员的实例,根据您的班级设计和项目设计,您可能会采取不同的方法。维护一个静态列表可能不是一个坏主意。
我唯一的问题是你如何能够确定代表正在被收集。因为,如果你能够访问它,那么你一定保留了它的参考。在这种情况下,它一定留在记忆里。
1
我认为你犯了一个错误:静态变量存在于应用程序的整个生命周期中,当应用程序运行时它们永远不会被GCed。
+0
基本上我的课曾经是一个单身 - 所以静态工作。现在我的要求是支持多个实例,因此静态不再是一个选项。 – weismat 2011-01-28 08:39:38
相关问题
- 1. 非托管C++垃圾回收帮助
- 2. C#静态垃圾收集器?
- 3. C#垃圾回收
- 4. 垃圾回收吃状态项目
- 5. 垃圾回收闪存
- 6. Objective-c和垃圾回收
- 7. 垃圾收集器,用于托管C++
- 8. JDBC垃圾回收
- 9. Java:垃圾回收
- 10. Java:垃圾回收
- 11. Erlang垃圾回收
- 12. java垃圾回收
- 13. Python垃圾回收
- 14. JS垃圾回收
- 15. Javascript垃圾回收
- 16. PhoneGap垃圾回收
- 17. java - 垃圾回收
- 18. C#垃圾收集
- 19. 应用委托中的垃圾房
- 20. Java:使用jlibs保证垃圾回收
- 21. 带静态构造函数的类垃圾回收
- 22. ASP.NET垃圾回收:是否引用静态类属性危险?
- 23. C#垃圾静态依赖关系
- 24. 关于非静态类和垃圾回收中的静态成员的问题
- 25. .net C#垃圾回收问题
- 26. Lua绑定到C++和垃圾回收
- 27. C#定时器和垃圾回收
- 28. C#垃圾回收活动根
- 29. C#异步调用垃圾回收
- 30. Monotouch:垃圾回收器,托管和非托管对象
您将看到由应用程序崩溃发生的垃圾收集;-) – weismat 2011-01-28 08:40:45