2011-07-14 24 views
1

我有一個WPF應用程序,它根據保存在數據庫中的表單配置呈現輸入表單。WPF性能導出TextBox控件的問題

窗體有許多控件(100+),並且這些控件中的大多數都是從TextBox控件派生的。在一些機器上(快速硬件,Win7 32Bit,還有一些老人,Windows XP 32Bit),在將數據輸入到很多這些表單之後,輸入性能下降。每個按鍵都會延遲幾毫秒,解決此問題的唯一解決方案是關閉應用程序並重新啓動它。

我的派生控件覆蓋了DefaultStyleKeyProperty的元數據以設置自定義模板。

我目前正在研究SciTech內存分析器中的應用程序,但也許有人已經經歷了派生TextBoxes的類似問題,並且可以給我一個提示並且讓我多花點時間/天來調查問題?

更新
看也here

回答

1

這聽起來像你可能有東西停止對「使用的表格」GCed控件。

首先開立和使用盡可能多形式地看着Windows任務管理器,看看你的內存使用量正在上升 - 如果不是有沒有尋找記憶韭菜點

檢查要刪除所有你的表單/控件的事件處理程序已經放置了任何長期存在的對象。

檢查您數據綁定到執行INotifyPropertyChanged的任何對象,請參閱KB938416

我在過去曾使用Red Gate memory profiler了良好的效果。

+0

+1事實上,我發現了一個像你在第四段中描述的內存錯誤。我正在進一步調查,也不清楚內存錯誤是否與延遲問題有直接關係,我們會看到...問題描述可以在這裏找到:http://support.microsoft.com/kb/938416/en-us,也許我會發布相關答案。 – HCL

0

你並不需要有創建的用戶不能看到控件,100多個控件需要一定費用。

你可以在虛擬模式中使用列表控件列表控件,所以你的TextBox控件只能在可見時被創建。

+0

感謝您的回答。不,這些表格是複雜形式的紙質表格的代表。我看不到有任何可能性進行UI虛擬化或任何形式的惰性控制創建。但問題不在於控制的數量。打開和使用這些表格中的大約50個後,問題就出現了。 – HCL