2009-06-17 87 views
4

在我们的场景中,我们有一个用户在远程桌面上使用的wpf应用程序,我们发现用户体验非常慢。通过远程桌面提高WPF应用程序速度?

有关改善此场景中的用户体验的任何建议?有一点可能是禁用任何动画/故事板,并避免在UI中使用渐变。更多的想法,赞赏。

+1

XP或Vista上的用户?在XP上使用WPF的远程桌面非常糟糕,因为位图显示是在服务器计算机上编写的,并通过线路发送到客户端。 – DavidK 2009-06-17 08:07:05

+0

不幸的是,用户正在使用xp – amazedsaint 2009-06-17 09:47:17

回答

9

对于渐变,它不像多个渲染图层那样重要,比如如果你有一堆嵌套控件都是部分不透明的。看看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软件光栅比在硬件绘制大大缓慢
相关问题