2014-11-05 31 views
2

我的應用程序使用windows窗體中的allowdrop=true可以進行拖放操作,同時還有許多自定義事件。當我運行配置文件時,我發現大部分對象都是通過droptarget對象返回的。將allowdrop設置爲true將導致.net應用程序中的內存泄漏

請讓我知道如何解決它。

我在某處讀它將其設置回false解決此問題,但我的控件加載到另一個容器中的內存中,即使關閉時也不會從內存中刪除。我只是在第一次顯示構造函數事件時,以及在它停留在內存中之後,即使我們關閉構造函數。

所以我沒有得到任何其他事件,並且沒有對它執行任何事件,當我關閉並從容器打開我的控件時,我仍然看到內存泄漏。讓我知道如何解決它。只有當我關閉容器時,纔會收到處置事件..

回答

2

解決方法如下:請勿使用您的Form作爲放置目標,請使用像容器這樣的小面板來切換AllowDrop屬性。

在某些情況下,下面的黑客已經解決了這個問題。

void Form1_DragDrop(object sender, DragEventArgs e) 
{ 
    //reset the AllowDrop and call GC to collect memory 
    AllowDrop = false; 
    GC.Collect(); 
    GC.Collect(); 
    AllowDrop = true; 
} 
+0

你能鏈接到錯誤報告嗎? – dsolimano 2014-11-05 20:53:27

+0

您好,您可以提供一些參考文件,其中t表示其已知問題。 – 2014-11-06 01:00:48

+0

我找不到錯誤報告,我編輯了答案,但我記得我讀過它:) @dsolimano – dotctor 2014-11-06 07:17:43