假设我有一个 WPF 应用程序,其中我有以下架构:
[工作线程] -> [队列 1] -> [队列管理器线程] -> [队列 2] -> [UI 线程]
Worker 正在侦听来自某个服务的数据并在不确定的时间(可能每秒多次或每隔几秒几次)接收该数据,然后将其排队到队列 1,然后是队列管理器,具体取决于UI 线程可能会决定提高/降低数据项排队到队列 2 的速率,UI 线程使用队列 2 来更新 UI,可能会丢弃一些项目,以免在事件发生时压倒 UI 线程接收太多消息(例如,它可能决定检查每条数据消息的时间戳,如果消息之间的差异比 UI 更新的最后一个数据项至少早 5 秒,则仅将其排入队列 2)
UI 线程将有一个计时器,该计时器触发一个设置间隔,以使用队列 2 中的新数据更新 UI。我想要做的是确定 UI 更新自身的速度以测量它在为了节流,例如增加/减少关于多久更新一次 UI 的计时器间隔
假设我的 UI 有很多控件(网格、图表等)都绑定到我的 UI shell 中队列 2 上不同的过滤/分组数据子集,并且在更新这些控件时 UI 开始变得无响应并在更新之间冻结,我怎么能检测到从代码中了解如何/何时增加/减少 UI 更新的间隔?基本上,我如何测量跨绑定到数据的所有控件重新绑定整个 UI 需要多长时间?
顺便说一句,这是一个好的设计还是可以改进?还有其他我可以考虑的策略吗?