WPF TreeViewコントロールで問題が発生しています。 私はこのコントロールといくつかのパフォーマンスの問題でメモリリークの問題に遭遇したと思います。 私はこれらの問題を見ることができるシンプルなデモソリューションを用意しました。 ダウンロードリンク:http://www.custom-projects.com/TreeViewMemoryAndPerformanceIssue.zipWPFのTreeViewでのメモリリークとパフォーマンスの問題
私はいくつかのドメインオブジェクトに基づいてツリーを作成しています。オブジェクトはビューモデルでラップされます。 レベルの数は制限されていませんが、現時点では最大3レベルです。
したがって、各ビューモデルは子を持つことができます。
UpDownコントロールの上/下ボタンをクリックしてマウスボタンを離さないと、int値の更新速度が遅くなり、メモリ消費量が絶えず増加することがわかります。
私がしていること:上/下ボタンをクリックすると、データバインディングを介して値がビューモデルに送信されます。セッターで私はイベントを起こしています。私たちのアプリケーションはさまざまなビューモデルで構成され、誰かがその中のデータを変更している場合、他の人はこれらのDataChangedイベントを通じて通知されます。
簡単にするために、私のデモソリューションは、NavigationViewModelで構成されています。したがって、DataChangedイベントのために をリッスンし、発生するとツリーがレンダリングされます。
リストは常に同じで(行が追加または削除されるだけで)ないため、私はObservableCollectionを使用していません。ユーザーが追加/作成したオブジェクトに基づいてリストを再生成する必要があります。
とにかく、これらのビューモデルをリストに追加し、NotifyPropertyChangedイベントを発生させます。 WPFがツリーを更新するようにします。うまく動作しますが、リストが更新されるほどアプリケーションが遅くなり、メモリも増えます。
アイテムビューモデルがガベージコレクションされていることを確認しましたので、私は 私の側に何か間違って表示されません。私もパフォーマンスプロファイリングをしました。私のコードは遅くならないので、 の問題はWPF側にあります。 Application.Runメソッド 実行時間が長くなる...奇妙なこと。
メモリが増えていて、決して解放されない理由は誰ですか、なぜ、 のパフォーマンスが低下し始めたのか、TreeView自体が更新されるのでしょうか?
この問題に関するご意見やご感想をお寄せいただきありがとうございます。
おかげで、 クリスチャン
*バンプ* 多分答えを知っている誰かが私の質問を見たことがありません。 – Christian