0

当用户单击 WinForms 菜单项时,将执行以下代码:

 // this is an Infragistics XamRibbonWindow
var someWpfInfragisticsWindow = new SomeWpfInfragisticsWindow();
ElementHost.EnableModelessKeyboardInterop(someWpfInfragisticsWindow);
someWpfInfragisticsWindow.Show();

显示的窗口是 Infragistics XamRibbonWindow。它还包含一个 Infragistics XamDataGrid,其 DataSource 绑定到视图模型上的 IEnumerable 属性。

该窗口还包含一个“搜索”按钮,该按钮将从数据库中检索新的项目集合,并设置前面提到的视图模型属性。这会导致网格显示新集合。

稍后,用户可以关闭窗口。没有编写代码来处理关闭。

我的问题是:

  1. 关闭窗口是否会处理窗口及其控件并使集合绑定到它的 GC 能力(假设不存在对集合的其他引用)?
  2. 有没有人看到我所描述的任何潜在的记忆问题?也许随着网格显示的项目的更新方式(或其他任何方式)?
4

1 回答 1

1

当窗口关闭时,如果您没有持有对它的引用,它应该可用于垃圾收集。从提供的详细信息中,我没有看到这种方法存在任何内存问题。

请注意,Infragistics 确实有一些静态类,它们会在您关闭窗口后保留。

如果您确实在使用 Infragistics 控件时遇到内存泄漏问题,并且认为这些控件可能是导致您应该联系 Infragistics 以帮助确定泄漏原因的原因。有链接可以在论坛上发布或从获取帮助页面提交支持案例。

于 2012-05-01T21:16:52.053 回答