“ContentPresenter.Content”内存泄漏

时间:2013-08-12 21:17:11

标签: .net wpf memory memory-leaks contentpresenter

我正在使用以下内容:VS 2010,.Net 4,WPF和.Net Memory Profiler版本4.6.40.0 Pro。它们都运行在Win7 64位上。我一直在使用.Net Memory Profiler来追踪内存泄漏,发现一个我不明白的东西,即使我似乎修复了它。我们有一个包含三个ContentPresenter对象的控件。如果我在Cleanup方法中将ContentPresenter对象的Content属性设置为null,则控件根本不会泄漏。如果我没有取消内容属性,我们会发生大量泄漏(每次测试大约3.5 MB)。

我在Google搜索中看到的结果似乎没有直接解决这个问题。 ContentPresenter的文档也没有帮助我。有没有人在这里理解为什么归零内容修复泄漏?有没有更好的方法来完成同样的事情?

我会注意到其中一个ContentPresenter是在WindowsFormsHost和BitmapSource之间动态切换来处理空域问题。

更新:以下是清理的相关部分:

首先,取消ContentPresenter的

AddressGridPlaceholder.Content = null;
AddressFormPlaceholder.Content = null;
MapControlPlaceholder.Content = null;

然后清理WindowsFormsHost

if (_hoster != null)
{
    _hoster.Child = null; // Remove the map control reference first
    _hoster.Dispose();    // Then Dispose
}

1 个答案:

答案 0 :(得分:0)

为什么看起来你没有使用控制绑定。手动玩这些东西并不好。