SrchItemEditDetail是一个框架
PageSearchFieldEnumMV是一个页面
下面多次调用
private void Revise_Helper(FieldDef SearchFieldSelected, enumAndOr paramAndOr)
{
PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(SearchFieldSelected, paramAndOr);
SrchItemEditDetail.Content = nextPage;
}
其他方法用其他页面填充SrchItemEditDetail.Content。
这是内存泄漏吗?
如果有,我可以用
修复它SrchItemEditDetail.Content = null;
答案 0 :(得分:1)
这是内存泄漏吗?
不,不是真的。以前的页面将被垃圾收集。
如果有,我可以使用
进行修复SrchItemEditDetail.Content = null;
这没用。无论如何,以前的内容将无法访问。
但是存在潜在的问题。当Frame以某种方式保留对Content页面的其他引用时(例如通过事件),那么您可能会有泄漏。
当PageSearchFieldEnumMV
拥有资源时,你不会及时释放它们。在这种情况下,或者在任何情况下都是安全的,请使用:
PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(...);
if (SrchItemEditDetail.Content != null)
SrchItemEditDetail.Content.Dispose(); // may need a typecast here
SrchItemEditDetail.Content = nextPage;