最近我注意到我的 WPF 项目中存在严重的内存泄漏。如果简化项目,它有一个登录表单和一个主表单。在主窗体中,有 1 个用户控件由大约 30 个用户控件和 3 个按钮组成,1 个用户控件具有 3 个按钮和一个 Infragistics 数据网格。我使用后台工作人员每 30 秒查询一次数据库,仅用于数据网格。
在我使用 main form.close 注销主窗体并重新启动登录窗口后,我注意到每次 ANTS 内存分析器 7 测量到 6-7MB 增加。即使我有未注册的事件处理程序,请将变量设置为 null并调用了 GC.Collect(),内存泄漏还是一样的。我的问题是: 1. 为什么关闭 wpf 窗口不释放内存和资源?我可以看到许多字符串(大部分来自 GUI)在 ANTs 分析器关闭窗口后仍在内存中。2. 资源事件设置器定义的事件是否需要注销?我是否需要取消注册在 XAML 中声明的事件?3. 从WPF 内存泄漏,人们说我们不应该使用 GC.Collect(),但我确实看到了一些改进。我们要不要使用它?