WPF数据更新性能问题

jiewei915 2015-12-11 09:56:41
应用场景:

1.Canvas上有500个文本框,每个文本框的Text属性随机绑定(OneWay)在10个整型的数据源(自定义的数据类)上。
2.该10个数据源每隔500毫秒变化(递增)一次。

问题:
500个文本框的数据显示有延迟,偶尔还会跳数字,比如现在显示12,下一次显示14,没有显示13。

如何修改以提高性能呢?
...全文
791 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
京昂 2016-11-16
  • 打赏
  • 举报
回复
using (Dispatcher.DisableProcessing()) { //数据源更新逻辑 } 这样会提高刷新性能
muzizongheng 2016-02-22
  • 打赏
  • 举报
回复
1.数据行有多少, 有没有用虚拟化 2.应该用textblock而不是label 3.尽量打出log,确认下是否是UI刷新的问题
jiewei915 2015-12-11
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
每隔500毫秒变化(递增)一次 -> 每变化一次 sleep 几百毫秒
WCF服务的数据500毫秒变一次 客户端这边300毫秒取一次数据
exception92 2015-12-11
  • 打赏
  • 举报
回复
每隔500毫秒变化(递增)一次 -> 每变化一次 sleep 几百毫秒
exception92 2015-12-11
  • 打赏
  • 举报
回复
引用 4 楼 jiewei915 的回复:
[quote=引用 3 楼 duanzi_peng 的回复:] [quote=引用 2 楼 jiewei915 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 每隔500毫秒变化(递增)一次 -> 每变化一次 sleep 几百毫秒
WCF服务的数据500毫秒变一次 客户端这边300毫秒取一次数据[/quote] 用队列吧。把每 300 毫秒去的数据储存,每次必须等到显示到 页面上 再取 队列中的下一个数据,当然这个等的时间是需要测试的。[/quote] 队列我测试过,我直接用赋值的方式,不用绑定,一样也卡。 当然,在我把数据更新及获取时间调整为1000毫秒后,即使增加到1000个文本框,也没有问题,所以我怀疑是WPF的界面刷新问题。 另外,我的机器是支持硬件加速的。[/quote] 换成 轻量级的 Label 测试。或者使用绘制方式,测测看看怎么样
jiewei915 2015-12-11
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 jiewei915 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] 每隔500毫秒变化(递增)一次 -> 每变化一次 sleep 几百毫秒
WCF服务的数据500毫秒变一次 客户端这边300毫秒取一次数据[/quote] 用队列吧。把每 300 毫秒去的数据储存,每次必须等到显示到 页面上 再取 队列中的下一个数据,当然这个等的时间是需要测试的。[/quote] 队列我测试过,我直接用赋值的方式,不用绑定,一样也卡。 当然,在我把数据更新及获取时间调整为1000毫秒后,即使增加到1000个文本框,也没有问题,所以我怀疑是WPF的界面刷新问题。 另外,我的机器是支持硬件加速的。
exception92 2015-12-11
  • 打赏
  • 举报
回复
引用 2 楼 jiewei915 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] 每隔500毫秒变化(递增)一次 -> 每变化一次 sleep 几百毫秒
WCF服务的数据500毫秒变一次 客户端这边300毫秒取一次数据[/quote] 用队列吧。把每 300 毫秒去的数据储存,每次必须等到显示到 页面上 再取 队列中的下一个数据,当然这个等的时间是需要测试的。

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧