6

我们正在编写一个需要一次运行多个小时的诊断工具,但是当我们在应用程序运行几个小时后尝试从 CheckedListBox 中删除项目时,我们遇到了一个神秘的内存不足异常。

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

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

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

有谁知道功能性工作?

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

4

2 回答 2

0

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

于 2012-06-27T12:14:20.913 回答
-2

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

于 2012-06-22T14:44:31.933 回答