【问题标题】:Rendering Thread of visual tree可视化树的渲染线程
【发布时间】:2016-03-21 14:01:03
【问题描述】:

我希望有可能中止渲染线程,我还没有找到解决我的问题的其他方法: 我有一个 MVVM 架构的项目,在我的 ShellView 中有一个带有按钮的菜单,我可以在 ContentControl 中选择不同的视图。 由于每个视图中有许多控件,并且为了改善与用户的交互,我在视图的构造函数中折叠了包含所有子控件的布局控件的可见性,然后在加载视图后呈现可见性。 它允许在渲染子控件之前先显示视图。

问题是在渲染过程中,如果我尝试更改视图,我必须等待当前视图的渲染,然后才能显示新选择的视图。

所以我的想法是中止当前视图的渲染并优先显示新视图。我该怎么做?

【问题讨论】:

    标签: wpf multithreading mvvm rendering


    【解决方案1】:

    如果是您自己的代码在该子控件中花费时间(即,如果您正在使用 Direct3D 互操作渲染 3D 游戏,或者在 CPU 上生成一些难以计算的位图,或者在 GUI 线程上使用阻塞 I/O,等等..)——在这种情况下,您可以将该工作卸载到其他线程(或者在这种情况下切换到非阻塞 I/O),并且只在完成后更新 GUI 线程。

    但如果是 WPF 渲染需要这么多时间,这意味着你的可视化树有问题。 Read this article for a start。如果幸运的话,您只需将几行 XAML 更改为例如启用虚拟化。如果没有,您将不得不重新设计整个 GUI 以解决性能问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      相关资源
      最近更新 更多