ama*_*int 4 .net windows wpf remote-desktop
在我们的场景中,我们有一个用户通过远程桌面使用的wpf应用程序,我们发现用户体验非常慢.
有关在这种情况下改善用户体验的任何建议吗?一点可能是禁用任何动画/故事板,并避免在UI中使用渐变.感谢更多的想法.
对于渐变,它不像多个渲染层那么多,例如,如果你有一堆嵌套控件都是部分不透明的.请查看可用的WPF 性能优化指南.那里有很多信息需要消化,但是有了渲染技巧和性能工具,你一定能够做出一些改进.
更新:
Jamie Rodriguez将在微软发布关于WPF的一些内部讨论.今天有一篇新帖子,其中包括远程处理时的性能提示和讨论.
自WPF 3.5 SP1以来,所有版本的WPF都使用Bitmap Remot远程(远程桌面和终端服务器).
位图远程处理的工作方式如下:
- 使用WPF的软件光栅化器在服务器上呈现应用程序
- 当应用程序运行时,服务器会跟踪应用程序窗口的哪些区域是新脏的并且需要更新
- 当需要更新区域时,服务器仅创建脏区域的压缩位图并将其发送到客户端
- 一旦客户端将该位图绘制到其自己窗口上的适当位置,客户端窗口就是最新的
鉴于此远程处理机制如何工作,可以通过以下几种方式最大化性能:
- 脏区应尽可能小,以便通过线路发送最少量的数据
- 应关闭环境动画
- 例如,将窗口背景设置为动画渐变将导致整个窗口每帧无效/重绘
- 系统不会优化应用程序的被遮挡部分
- 例如,完全隐藏在其他一些不透明元素后面的动画仍会导致脏区域失效/位图生成.从您的应用程序中删除它们
- 应尽可能不频繁地创建脏区
- 关闭尽可能多的动画
- 对于那些无法完全消除的动画,请使用DesiredFramerate属性降低动画帧速率
- 脏区位图应尽可能简单,以最大化其压缩
- 在TS上运行的应用程序应该优先于渐变色或其他奇异填充(不必要的图像等)的纯色,特别是对于将经常重绘的应用程序片段
- 避免在软件中渲染时特别慢的操作
- BitmapEffects/Effects/ShaderEffects,特别是大半径的模糊和阴影,在软件中非常慢
- 3D - 3D软件光栅化器比在硬件中渲染要慢得多