2009-06-17 88 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軟件光柵比在硬件繪製大大緩慢
相關問題