Share via


最佳化效能:其他建議

更新:2007 年 11 月

本主題提供最佳化 WPF 應用程式效能一節中主題所涵蓋內容以外的效能建議。

這個主題包含下列章節。

  • 筆刷透明度與項目透明度的比較
  • 物件巡覽
  • 大型立體表面的點擊測試
  • CompositionTarget.Rendering 事件
  • 避免使用 ScrollBarVisibility=Auto
  • 設定字型快取服務以縮短啟動時間
  • 終端機服務呈現加強功能
  • 相關主題

筆刷透明度與項目透明度的比較

當您使用 Brush 設定項目的 FillStroke 時,您應設定 Brush.Opacity 值,而非設定項目的 Opacity 屬性。修改項目的 Opacity 屬性可能會使 WPF 建立暫時介面。

物件巡覽

NavigationWindow 物件是衍生自 Window,並使用內容巡覽支援加以擴充,這主要是藉由彙總 (Aggregate) NavigationService 與日誌來進行。您可以指定統一資源識別元 (URI) 或物件,來更新 NavigationWindow 的用戶端區域。下列範例顯示這兩種方法:

private void buttonGoToUri(object sender, RoutedEventArgs args)
{
    navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}

private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
    NewPage nextPage = new NewPage();
    nextPage.InitializeComponent();
    navWindow.Content = nextPage;
}

每個 NavigationWindow 物件各有一份日誌,其中記載使用者在該視窗中的巡覽記錄。日誌的用途之一,就是讓使用者能夠追溯其步驟。

當您使用統一資源識別元 (URI) 進行巡覽時,日誌只會儲存統一資源識別元 (URI) 參考。這表示您每次重新造訪頁面時,它都會動態重新建構,如果頁面相當複雜,就有可能耗費許多時間。在此情況下,日誌儲存成本雖然較低,但重新建構頁面所需的時間則可能很長。

當您使用物件進行巡覽時,日誌會儲存該物件的整個視覺化樹狀結構。這表示在您每次重新造訪頁面時,它都會立即呈現而不需重新建構。在此情況下,日誌儲存成本較高,但重新建構頁面所需的時間較短。

當您使用 NavigationWindow 物件時,必須留意日誌支援對您的應用程式效能所造成的影響。如需詳細資訊,請參閱巡覽概觀

大型立體表面的點擊測試

就 CPU 的耗用量而言,大型立體表面的點擊測試 (Hit Testing) 是一項很耗損效能的作業。當立體表面為動畫形式時,更是如此。若您不需要對這些表面進行點擊測試,請停用點擊測試。衍生自 UIElement 的物件可透過將 IsHitTestVisible 屬性設為 false,以停用點擊測試。

CompositionTarget.Rendering 事件

CompositionTarget.Rendering 事件會造成 WPF 連續執行動畫。若使用此事件,請盡可能中斷其連結。

避免使用 ScrollBarVisibility=Auto

若情況允許,請避免對 HorizontalScrollBarVisibility 與 VerticalScrollBarVisibility 屬性使用 ScrollBarVisibility.Auto 值。這些屬性是針對 RichTextBoxScrollViewerTextBox 物件而定義的,並且屬於 ListBox 物件的附加屬性。您應該將 ScrollBarVisibility 設定為 DisabledHiddenVisible

Auto 值適用於空間有限且捲軸僅在必要時才顯示的情況。例如,相對於含有數百行文字的 TextBox,使用此 ScrollBarVisibility 值搭配 30 個項目的 ListBox 就會比較適合。

設定字型快取服務以縮短啟動時間

WPF 字型快取服務可在 WPF 應用程式間共用字型資料。您所執行的第一個 WPF 應用程式會啟動此服務 (若尚未執行)。若您使用 Windows Vista,您可將 "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" 服務從「手動」(預設值) 設定為「自動 (延遲開始)」,以縮短 WPF 應用程式的初始啟動時間。

終端機服務呈現加強功能

遠端桌面連線可讓用戶端在以遠端方式在伺服器上執行應用程式,同時在用戶端上顯示這些應用程式。此伺服器可以是 Windows 終端機伺服器 (同時可服務多個遠端桌面連線),也可以是某個 Windows 版本 (服務單一遠端桌面連線)。當使用者透過遠端桌面連線執行應用程式時,該應用程式會在伺服器上執行。用戶端上的鍵盤與滑鼠活動會傳輸至伺服器,而應用程式 UI 會在伺服器上以點陣圖的形式產生,並傳輸至用戶端。

透過網路將點陣圖傳送至用戶端可以模擬使用者介面,但其效能與在用戶端本機上呈現 UI 不同。所幸,透過本機和遠端連接 (RDC) 工作階段 (Session) 執行的 WPF 應用程式,可利用 Windows Vista 中的特殊呈現支援呈現於用戶端上。

若要利用此支援,必須符合下列需求:

  • 伺服器必須與 Windows Vista Ultimate 或 Windows Vista Enterprise 一起安裝。

  • 伺服器必須具備足夠的記憶體,才能符合桌面視窗管理員 (DWM) 的記憶體需求 (其他如視訊卡等 DWM 需求則不需符合)。

  • 用戶端的 Vista 組建 (Build) 必須與伺服器相同。

  • 用戶端必須能夠執行 Windows Vista 桌面視窗管理員 (DWM)。桌面視窗管理員的工作階段管理員服務執行時,會啟用 DWM。

  • 用戶端不可執行會停用 DWM 的應用程式,如「會議空間」或「遠端協助」。

  • 用戶端不可對具有所需 WPF 應用程式的伺服器使用多重躍點。多重躍點表示從某個工作階段建立另一個工作階段。

  • 用戶端的遠端桌面連線組態必須包含下列項目:

    • 必須在 [遠端桌面連線] | [選項] | [進階設定] 上選取 [桌面轉譯緩衝處理]。

    • 必須在 [遠端桌面連線] | [選項] | [進階設定] 上選取 [主題]。

    • 必須在 [遠端桌面連線] | [選項] | [顯示器] | [色彩] 上選取 [32 位元色彩]。

注意事項:

如需 DWM 需求的相關資訊,請參閱 Windows Vista 啟用 Windows Aero 的規則 (英文)。

請參閱

概念

應用程式效能規劃

最佳化效能:運用硬體

最佳化效能:配置與設計

最佳化效能:2D 圖形和影像處理

最佳化效能:物件行為

最佳化效能:應用程式資源

最佳化效能:文字

最佳化效能:資料繫結

WPF 效能工具和資源

動畫秘訣和訣竅