有人可以告诉我如何处理 UI 线程和其他“工作”线程之间的 Silverlight 进程。
我有一个场景,我必须通过视图模型更新视图中的数百个复杂 UI 对象。每个项目都由其自己的视图模型支持。
如果每个视图模型都有一个属性,例如,称为 IsSelected,它通过行为更改背景颜色,我应该如何更改最小的 UI 线程阻塞?
如果我更新我的(几百个)视图模型,它会阻塞 UI 线程大约 4 秒。我如何确定阻塞的原因?有没有更有效的更新方式?
谢谢
有人可以告诉我如何处理 UI 线程和其他“工作”线程之间的 Silverlight 进程。
我有一个场景,我必须通过视图模型更新视图中的数百个复杂 UI 对象。每个项目都由其自己的视图模型支持。
如果每个视图模型都有一个属性,例如,称为 IsSelected,它通过行为更改背景颜色,我应该如何更改最小的 UI 线程阻塞?
如果我更新我的(几百个)视图模型,它会阻塞 UI 线程大约 4 秒。我如何确定阻塞的原因?有没有更有效的更新方式?
谢谢
肯定有比一次性完成更有效的方法。
一个非 Silverlight 特定的解决方案是使用 DispatcherTimer 延迟调用将这些更新间隔几毫秒,因此线程有一些“喘息空间”来继续执行路径。
但是您还应该考虑一下您的架构,如果您正在处理数百个虚拟机,则可能值得使用延迟加载并按顺序更新您的屏幕,按照对您的受众的重要性排序。
有关更多解释,请参见此答案:https ://stackoverflow.com/a/1710868/21217