我们正在编写一个需要一次运行数小时的诊断工具,但是当我们尝试在应用程序运行一对夫妇后从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的回答
答案 0 :(得分:0)
事实证明,有人在应用程序中留下了一段调试代码,该代码向ArrayList
附加了相当详细的日志信息,而没有清除它。该代码还将ArrayList
的副本附加到自身。忘记带走绝对不是件好事。
答案 1 :(得分:-2)
我认为最好的做法是在代码中的某些位置调用GarbageCollector。只需添加GC.Collect();靠近一些循环,它应该解决你的内存问题。