在使用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