将allowdrop设置为true会导致.net应用程序中的内存泄漏

时间:2014-11-05 17:30:38

标签: c# .net winforms memory-leaks

我的应用程序在Windows窗体中使用allowdrop=true能够执行拖放操作,并且它有许多自定义事件。当我运行配置文件时,我发现大多数对象都是由droptarget对象帮助回来的。

请让我知道如何修复它。

我在某处将其设置为false将其解析为false,但是我的控件被加载到另一个容器的内存中,即使我关闭,它也没有从内存中删除。我只是在它显示的时候第一次得到构造函数事件,即使我们关闭它也会在内存中保留它。

所以我没有得到任何其他事件,也没有对它执行任何事件,当我关闭并从容器中打开我的控件时,我继续看到内存泄漏。让我知道如何解决它。只有当我关闭容器时才能处理事件..

1 个答案:

答案 0 :(得分: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;
}