Могут возникнуть некоторые проблемы в Google, с постоянной утечкой 4 КБ при использовании HWndSource. Кажется, моя проблема схожа с этим.
Утечка памяти WPF в XP (CMilChannel, HWND)
Я смоделировал эту проблему в примере приложения MFC Dilaog, которое похоже на мое настоящее приложение для разработки. В конструкторе приложений я сначала создал фиктивный объект HWndSource, и он, похоже, показывает улучшение утечки памяти.
Я добавил еще одну экспортированную функцию в мой промежуточный dll mfc с поддержкой clr, который создает 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();
Кажется, это контролирует память приложения, но на самом деле я не мог понять проблему.
Я пытался реализовать это в моем реальном приложении разработки, и я вижу, что приложение закрывается, когда я вызываю этот экспортированный метод dll с поддержкой / clr. Я делаю статическое связывание DLL с поддержкой clr в основном приложении без поддержки clr