我想有可能中止渲染线程,我还没有找到解决我问题的其他方法: 我有一个MVVM架构的项目,在我的ShellView中我有一个带按钮的菜单,我可以在ContentControl中选择不同的视图。 由于每个视图中有许多控件,为了改善与用户的交互,我将展开包含视图构造函数中所有子控件的布局控件的可见性,然后在加载视图后渲染可见。 它允许在渲染子控件之前首先显示视图。
问题出在渲染过程中,如果我尝试更改视图,我必须等待渲染当前视图,然后再显示所选的新视图。
所以我的想法是中止当前视图的渲染并优先显示新视图。我怎么能这样做?
答案 0 :(得分:0)
如果您自己的代码花费时间在该子控件上(即如果您使用Direct3D互操作渲染3D游戏,或者在CPU上生成一些难以计算的位图,或者在GUI线程上使用阻塞I / O,等等。) - 在这种情况下,您可以将该工作卸载到其他某个线程(或者如果是这种情况则切换到非阻塞I / O),并且只在完成后更新GUI线程。
但是如果它的WPF渲染耗费了那么多时间,那就意味着你的可视化树出了问题。 Read this article for a start。如果你很幸运,你只需要将几行XAML更改为例如启用虚拟化。如果没有,您将不得不重新修改整个GUI以解决性能问题。