2011-07-14 27 views
1

データベースに保存されたフォーム構成に基づいて入力フォームをレンダリングするWPFアプリケーションがあります。派生TextBoxコントロールのWPFパフォーマンスの問題

フォームには多数のコントロール(100+)があり、これらのコントロールのほとんどはTextBoxコントロールから派生しています。いくつかのマシン(高速ハードウェア、Win7 32ビット、一部の高齢者、Windows XP 32ビット)では、これらのフォームに多くのデータを入力すると、入力パフォーマンスが低下します。すべてのキーストロークは数ミリ秒の遅延をもたらし、これを解決する唯一の解決策は、アプリケーションを閉じて再起動することです。

派生したコントロールは、DefaultStyleKeyPropertyのメタデータをオーバーライドしてカスタムテンプレートを設定します。

私は現在、SciTechメモリプロファイラでアプリケーションを再構築していますが、派生したテキストボックスで同様の問題が発生している可能性があります。また

更新
ルックhere

答えて

1

GCedされている "使用されたフォーム"のコントロールを停止させるようなことがあるようです。

あなたがすべて削除されている確認されていない場合は、メモリネギを探していない点はありません -

まず開口部が、あなたのメモリ使用量が上がっているかどうかを確認するために、Windowsのタスクマネージャを見て、できるだけ多くの形式を使用しますフォーム/コントロールのイベントハンドラは、長命のオブジェクトを置いています。あなたはINotifyPropertyChangedのを実装するためにデータバインドするオブジェクトが、KB938416

を参照してください、私が過去にRed Gate memory profilerを使用して良い結果を持っていたことを

チェック。

+0

+1確かに私は4番目の段落で説明したようなメモリ不具合を発見しました。私はさらに調査中で、メモリのバグが遅延の問題と直接関係しているのかどうかは明らかではありません。問題の説明はここにあります:http://support.microsoft.com/kb/938416/en-us、多分関連する回答を投稿します。 – HCL

0

あなたは100+コントロールがコストを持つことになり、ユーザーが見ることができないことを作成したコントロールを持っている必要はありません。

バーチャルモードでリストコントロールを使用すると、TextBoxコントロールが表示されたときにのみ作成できます。

+0

ご回答ありがとうございます。いいえ、書式は複雑な書式の紙形式の表現です。私は、UI仮想化や何らかの怠惰なコントロール作成を行う可能性は見当たりません。しかし問題はコントロールの量ではありません。問題は、これらのフォームの約50を開いて使用した後に発生します。 – HCL

関連する問題