WinForms中的WPF窗口:内存未释放

时间:2016-06-03 08:13:35

标签: c# .net wpf winforms memory

当我在WinForms窗口中打开WPF窗口时出现内存问题。 目前我这样做:

public partial class Form1 : Form
{
    MemoryTester.MainWindow wpf_window;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        wpf_window = new MemoryTester.MainWindow())
        wpf_window.Closed += Wpf_window_Closed;
        wpf_window.Show();

    }
}

它正确打开但是当我关闭窗口时,似乎没有释放分配的内存。 Visual Studio诊断工具中分配的进程内存显示,当我打开窗口时,该数字上升了大约20MB但从未达到窗口关闭之前的水平。在没有Visual Studio的情况下启动程序时,在任务管理器中也是如此。

由于Wpf窗口没有Dispose()方法,我尝试捕获已关闭的事件并执行以下操作:

    private void Wpf_window_Closed(object sender, EventArgs e)
    {

        wpf_window.Closed -= Wpf_window_Closed;

        wpf_window.Close();

        GC.Collect();
    }

仍然是相同的行为。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用声明?

using(wpf_window = new MemoryTester.MainWindow()){
    wpf_window.Closed += Wpf_window_Closed;
    wpf_window.Show();}