在使用HWndSource时,可能会在谷歌中看到一些连续泄漏4kb的问题。我的问题似乎与此相似。
WPF Memory Leak on XP (CMilChannel, HWND)
我有一个样品MFC Dilaog应用是类似我的实际开发应用在模拟这个问题。在应用程序的构造函数中,我先创建了一个虚拟的HWndSource对象,它似乎显示内存泄漏的改进。
我已经添加了另一个导出的函数在我的clr启用中间mfc常规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启用DLL。我正在一个非clr启用的主应用程序中启用clr启用dll的静态链接
“我正在调用HWndSource和wpf用户控件上的删除,以便它的dispose应该被调用”。咦? 1. HWndSource和WPF控件是管理对象,因此没有“删除”调用。 2. Dispose是完全可选的(你不能通过忘记调用它来泄漏内存)。请说明你实际做了什么以及你期望发生什么。 – 2010-06-02 18:54:52