1

SrchItemEditDetail 是一个框架
PageSearchFieldEnumMV 是一个 Page
下面被调用了很多次

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

其他方法用其他 Pages 填充 SrchItemEditDetail.Content。

这是内存泄漏吗?

如果是这样,我可以用

SrchItemEditDetail.Content = null;
4

1 回答 1

1

这是内存泄漏吗?

不,不是。以前的页面将被垃圾收集。

如果是这样,我可以用SrchItemEditDetail.Content = null;

那用处不大。无论如何,以前的内容将变得无法访问。

但也有潜在的问题。当框架以某种方式保留对内容页面的其他引用(例如通过事件)时,您可能会发生泄漏。

PageSearchFieldEnumMV持有资源时,您没有及时释放它们。在这种情况下,或者为了安全起见,请使用:

PageSearchFieldEnumMV nextPage = new PageSearchFieldEnumMV(...);

if (SrchItemEditDetail.Content != null)
   SrchItemEditDetail.Content.Dispose();   // may need a typecast here

SrchItemEditDetail.Content = nextPage;
于 2013-08-11T14:14:29.293 回答