使用WpfHWndSource时连续内存泄漏

使用WpfHWndSource时连续内存泄漏,wpf,Wpf,我必须在从ocx控件调用的MFC对话框中加载WPF用户控件。为此,我创建了一个MFC常规Dll(启用clr选项的混合模式常规Dll),并在其中创建了一个对话框,其中使用HWndSource托管wpf用户控件。此导出的对话框作为从ocx调用的MFC对话框上方thr的子对话框放置。Ny中间对话框使用C++/Cli代码 当主MFC对话框关闭时,我正在删除在堆上创建的中间对话框的ptr引用。但是在那之后,我仍然看到了持续的内存泄漏或增长。 在对话框的析构函数中,我调用HWndSource上的delete

我必须在从ocx控件调用的MFC对话框中加载WPF用户控件。为此,我创建了一个MFC常规Dll(启用clr选项的混合模式常规Dll),并在其中创建了一个对话框,其中使用HWndSource托管wpf用户控件。此导出的对话框作为从ocx调用的MFC对话框上方thr的子对话框放置。Ny中间对话框使用C++/Cli代码

当主MFC对话框关闭时,我正在删除在堆上创建的中间对话框的ptr引用。但是在那之后,我仍然看到了持续的内存泄漏或增长。
在对话框的析构函数中,我调用HWndSource上的delete和wpf用户控件,以便调用其dispose

但我看到了一个连续泄漏后


这方面的任何帮助都会很有帮助。

可能会在谷歌看到一些问题,在使用HWndSource时会持续泄漏4kb。我的问题似乎与此相似

我在一个示例MFC Dilaog应用程序中模拟了这个问题,该应用程序与我的实际开发应用程序类似。在应用程序的构造函数中,我首先创建了一个虚拟HWndSource对象,它似乎显示了内存泄漏方面的改进

我在启用clr的中间mfc常规dll中添加了另一个导出函数,该dll创建HWndSource。我正在从应用程序的构造函数调用这个导出的函数

void CConnectionPanelExport::CreateHwndSource()
{
    HWND hwnd = (HWND)(gcnew  System::Windows::Interop::HwndSource(*gcnew  
      System::Windows::Interop::HwndSourceParameters("MyApplication")))->Handle.ToPointer();
    CWnd *temp= CWnd::FromHandle(hwnd);
    temp->ShowWindow(SW_HIDE);
}
我从应用程序的构造函数调用

CConnectionPanelExport connectionPanelExport;
connectionPanelExport.CreateHwndSource();
这似乎可以控制应用程序的内存,但实际上我无法理解这个问题


我已经尝试在我的实际开发应用程序中实现了这一点,当我调用这个/clr-enabled-dll的导出方法时,我看到应用程序正在关闭。我正在对未启用clr的主应用程序中启用clr的dll进行静态链接

“我正在调用HWndSource和wpf用户控件上的delete,以便调用其dispose”。嗯?1.HWndSource和WPF控件是托管对象,因此不需要调用“delete”。2.Dispose是完全可选的(您不能忘记调用它而泄漏内存)。请澄清您实际做了什么以及您预期会发生什么。您应该使用问题下方的编辑按钮,而不是发布“答案”来添加信息。