我有一个标准的CRUD应用程序,处理大量数据。不同的窗口使用Linq-To-SQL访问不同的表格,每个窗口基本上都有一个网格,其中的单元格绑定到我正在显示的对象。
以下是正在发生的相当标准的用例:
- 打开A窗口
- 关闭A窗口-A窗口现在仍然在内存中,但不再可见。
- 打开B窗口
- 关闭B窗口-现在A和B窗口都在内存中,且都不可见。
- 打开C窗口
- 当为窗口C检索数据时,将释放窗口A的资源。
因此,在任何给定时间,我都会持有2-3个窗口在内存中,而实际上我只需要一个窗口。我甚至在这些窗口的关闭事件中添加了处置代码,将我能想到的所有引用都设置为null。
我尝试使用ANTS内存分析器,并注意到每个窗口都被设置为GC根。是否有一种方法可以禁用此行为或以某种方式强制GC从这些窗口中收集?
谢谢!
PS: 我已经检查了这个链接,但它没有解决问题。
编辑: 问题在于用户遇到了System.OutOfMemoryExceptions。