6

一度に何時間も実行する必要がある診断ツールを作成していますが、アプリケーションを数時間実行した後に CheckedListBox から項目を削除しようとすると、不思議なメモリ不足例外が発生します。

最初は を使用してcheckedListBox.Items.Clear();みましたが、グーグルで調べた後、代わりに次のようなものを試しました。

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

残念ながら、上記は問題を解決しませんでした。MSDN フォーラムでそのアイデアを見つけましたが、今朝もリンクを見つけることはできません。ただし、そのフォーラムでは、誰かがアプリケーションのプロファイリングを行ったところ、メモリ リークがCheckedListBox.Items.Clear().

機能的な回避策を知っている人はいますか?

EDIT: FingerTheCatの答えは一時的に私たちの問題を解決したので、今のところ答えとしてマークします. ただし、実際の問題を見つけようと、コードをくまなく調べ始めました。残念ながら、現在の実装は大部分がスパゲッティ コードであるため、何かが見つかるまでには数日かかる可能性があります。

4

2 に答える 2

0

結局のところ、何者かがアプリケーションにデバッグ コードの一部を残しており、かなり詳細なログ情報を に追加しており、ArrayListそれをクリアすることはありませんでした。そのコードは、のコピーArrayListをそれ自体にも追加していました。持ち出し忘れは絶対にダメです。

于 2012-06-27T12:14:20.913 に答える
-2

最善の方法は、コードのいくつかのポイントで GarbageCollector を呼び出すことだと思います。GC.Collect(); を追加するだけです。いくつかのループの近くで、メモリの問題を修正する必要があります。

于 2012-06-22T14:44:31.933 に答える