一度に何時間も実行する必要のある診断ツールを作成していますが、アプリケーションの実行後にCheckedListBoxから項目を削除しようとすると、不思議なメモリ不足例外が発生しています2〜3時間。CheckedListBoxメモリリーク
我々が最初にcheckedListBox.Items.Clear();
を使用してみました、といくつかの周りグーグルの後、我々は代わりに次のようなものを試してみました:
for (int i = checkedListBox.Items.Count - 1; i >= 0; i--)
{
checkedListBox.Items.RemoveAt(i);
}
残念ながら、上記の問題を解決していませんでした。私はMSDNフォーラムでそのアイデアを見つけましたが、私の人生は今朝再びリンクを見つけることができません。しかし、そのフォーラムでは、誰かがアプリケーションのプロファイルを作成し、メモリリークがCheckedListBox.Items.Clear()
で見つかったと言っていました。
誰でも機能的な回避策を知っていますか?
EDIT: FingerTheCatの答えは一時は、私たちの問題を解決したので、私は今の答えとしてそれをマークします。しかし、私たちは実際の問題を見つけようと試みるためにコードをコーディネートし始めました。残念ながら、現在の実装は主にスパゲッティコードなので、何かを見つけるまで数日かかることがあります。
チェックされたリストボックスにどのようなアイテムを追加しますか?これらのオブジェクトを明示的にクリーンアップするだけでなく、リストボックスからそれらを削除する(例えば、Dispose()など)ことが必要な場合があります。 – MusiGenesis
forループでメモリリークを解決できましたか? – Damith
CheckedListBoxがメモリリークを持っていないと思います。 Perfmon.exeを使用して.NETパフォーマンスカウンターを観察し、定期的なガベージコレクションが行われていることを確認します。そうでなければ、あなたのアプリでDispose()コールが見つからないために狩りをする必要があります。 –