CheckedListBox内存泄漏

时间:2012-06-22 14:34:24

标签: c# winforms memory-leaks

我们正在编写一个需要一次运行数小时的诊断工具,但是当我们尝试在应用程序运行一对夫妇后从CheckedListBox中删除项目时,我们遇到了一个神秘的Out of Memory Exception小时。

我们最初尝试使用checkedListBox.Items.Clear();,经过一些谷歌搜索后,我们尝试了类似以下的内容:

for (int i = checkedListBox.Items.Count - 1; i >= 0; i--)
{
   checkedListBox.Items.RemoveAt(i);
}

不幸的是,以上并没有解决问题。我在MSDN论坛上发现了这个想法,但我不能为我的生活今天早上再找到这个链接。但是,该论坛确实说过有人在CheckedListBox.Items.Clear()找到了他们的应用程序并发现了内存泄漏。

有没有人知道功能性工作?

编辑: FingerTheCat的回答暂时解决了我们的问题,所以我现在将其标记为答案。但是,我们已经开始梳理代码以尝试找到真正的问题。不幸的是,目前的实施主要是意大利面条代码,所以可能需要几天时间才发现。

2 个答案:

答案 0 :(得分:0)

事实证明,有人在应用程序中留下了一段调试代码,该代码向ArrayList附加了相当详细的日志信息,而没有清除它。该代码还将ArrayList的副本附加到自身。忘记带走绝对不是件好事。

答案 1 :(得分:-2)

我认为最好的做法是在代码中的某些位置调用GarbageCollector。只需添加GC.Collect();靠近一些循环,它应该解决你的内存问题。