我有一个WPF应用程序,它根据保存在数据库中的表单配置呈现输入表单。
表单有许多控件(100+),并且大多数控件都是从TextBox控件派生的。在一些机器上(快速硬件,Win7 32Bit,也有一些老年人,Windows XP 32Bit),在输入大量这些形式的数据后,输入性能下降。每次击键都会延迟几毫秒,解决此问题的唯一方法是关闭应用程序并重新启动它。
我的派生控件会覆盖DefaultStyleKeyProperty
的元数据以设置自定义模板。
我目前正在重新研究SciTech内存分析器中的应用程序,但也许有人已经遇到类似的衍生TextBox问题,可以给我一个提示并让我多花几个小时/天来调查这个问题?
更新
另请看here
答案 0 :(得分:1)
听起来你可能有一些东西停止了“使用过的表格”被控制的控件。
首先打开并使用尽可能多的表单,查看Windows任务管理器,看看你的内存使用情况是否正在上升 - 如果不是,那就没有必要寻找内存韭菜
检查您是否删除了表单/控件放置在任何长寿命对象上的所有事件处理程序。
检查您为数据绑定实现INotifyPropertyChanged的任何对象,请参阅KB938416
我过去使用Red Gate memory profiler获得了良好的效果。
答案 1 :(得分:0)
您无需创建用户无法看到的控件,100多个控件将有成本。
您是否可以在虚拟模式下使用列表控件列表控件,因此只有在可见时才会创建TextBox控件。