在我们的场景中,我们有一个用户在远程桌面上使用的wpf应用程序,我们发现用户体验非常慢。通过远程桌面提高WPF应用程序速度?
有关改善此场景中的用户体验的任何建议?有一点可能是禁用任何动画/故事板,并避免在UI中使用渐变。更多的想法,赞赏。
在我们的场景中,我们有一个用户在远程桌面上使用的wpf应用程序,我们发现用户体验非常慢。通过远程桌面提高WPF应用程序速度?
有关改善此场景中的用户体验的任何建议?有一点可能是禁用任何动画/故事板,并避免在UI中使用渐变。更多的想法,赞赏。
对于渐变,它不像多个渲染图层那样重要,比如如果你有一堆嵌套控件都是部分不透明的。看看WPF Performance Optimization指南可用。这里有很多信息需要消化,但是随着渲染技巧和performance tools的提示,您绝对应该可以做出一些改进。
UPDATE:
Jamie Rodriguez会发布一些在微软WPF的内部讨论。今天有一个新帖子,其中包括关于performance when remoting的提示和讨论。
自WPF 3.5 SP1以来,所有版本的WPF都使用Bitmap Remoting进行远程(包括远程桌面和终端服务器)。
位图远程发送的工作原理如下:
- 应用程序使用WPF的软件光栅
- 在应用程序运行在服务器上呈现,在服务器跟踪哪些应用程序的窗口的区域是新脏,需要更新
- 当一个区域需要更新,服务器只创建脏区的压缩位并发送给客户端
- 一旦客户得出位图上我的适当位置TS自己的窗口,客户端窗口达最新
鉴于这种远程机制的工作原理,性能可以通过多种方式来最大化:
- 脏区应保持尽可能小,所以数据的最低量在导线
- 环境动画应关闭
- 例如发送,设定窗口背景到动画梯度会导致整个窗口将被无效/重绘ë非常帧
- 系统不优化掉应用
- 例如,一动画,它是完全隐藏在一些其它不透明元件仍然会导致发生脏区域无效化/位图产生的遮挡的部分。从应用程序中删除这些。
- 脏区应尽可能少产生
- 关闭尽可能多的动画尽可能
- 对于不能完全消除这些动画,降低使用DesiredFramerate财产
动画帧率- 脏区位图应该是尽可能简单最大限度地压缩
- 应用程序运行在TS应该偏向于梯度或其他外来填充纯色(不必要的图像等),特别是对于应用条软件 渲染时会经常重绘是特别慢
- 避免操作
- BitmapEffects /效果/ ShaderEffects,特别是模糊和阴影与大的半径,在软件相当缓慢
- 3D - 所述3D软件光栅比在硬件绘制大大缓慢
您可以查询的WPF效能层级(http://msdn.microsoft.com/en-us/library/ms742196.aspx)和冲高回落的动画/图形弄虚作假适当,使您的应用程序仍然运行的同时快速过RDP看起来很大本地。
XP或Vista上的用户?在XP上使用WPF的远程桌面非常糟糕,因为位图显示是在服务器计算机上编写的,并通过线路发送到客户端。 – DavidK 2009-06-17 08:07:05
不幸的是,用户正在使用xp – amazedsaint 2009-06-17 09:47:17