繁体   English   中英

WPF WindowsFormsHost 内存泄漏

[英]WPF WindowsFormsHost memory leak

我有一个 WPF TabControl,在每个 TabPage 中包含一个 WindowsFormsHost。 用户可以根据需要添加和删除TabPage:当用户删除一个Tab时,我显然处理了子控件和宿主本身。

使用 VS 诊断工具,我发现了 WindowsFormsHost 的泄漏:

泄露

我还使用一个没有内部孩子的空 WindowsFormsHost 重现了这个问题,并使用框架 4.0 和 4.7.2 进行了测试。 就像是:

<Grid>
    <WindowsFormsHost/>

我该如何解决? GC.Collect() 不能解决问题。

解决了从父布局中删除 WindowsFormsHost 元素的问题:

public class WindowsFormsHostEx : WindowsFormsHost
{
    public WindowsFormsHostEx() { }

    protected override void Dispose(bool disposing)
    {
        if (this.Child != null && this.Child is IDisposable)
            (this.Child as IDisposable).Dispose();

        this.Child = null;

        //magic line!!!
        (this.Parent as Panel).Children.Remove(this);

        base.Dispose(disposing);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM