这是内存泄漏吗?

时间:2013-08-11 14:07:34

标签: c# .net wpf memory-leaks

SrchItemEditDetail是一个框架
PageSearchFieldEnumMV是一个页面 下面多次调用

private void Revise_Helper(FieldDef SearchFieldSelected, enumAndOr paramAndOr)
{
   PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(SearchFieldSelected, paramAndOr);
   SrchItemEditDetail.Content = nextPage;
}

其他方法用其他页面填充SrchItemEditDetail.Content。

这是内存泄漏吗?

如果有,我可以用

修复它
SrchItemEditDetail.Content = null;

1 个答案:

答案 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;