Optimieren der Leistung: Weitere Empfehlungen
Aktualisiert: November 2007
Dieses Thema enthält zusätzlich zu den in den Themen des Abschnitts Optimieren der WPF-Anwendungsleistung beschriebenen Empfehlungen weitere Empfehlungen zur Leistungsoptimierung.
Dieses Thema enthält folgende Abschnitte.
- Durchlässigkeit für Pinsel oder Durchlässigkeit für Elemente
- Navigation zu Objekt
- Treffertests für große 3D-Oberflächen
- CompositionTarget.Rendering-Ereignis
- Vermeiden der Verwendung von ScrollBarVisibility=Auto
- Konfigurieren des Schriftartcachediensts zum Reduzieren der Startzeit
- Renderingverbesserungen für Terminaldienste
- Verwandte Abschnitte
Durchlässigkeit für Pinsel oder Durchlässigkeit für Elemente
Wenn Sie mit einem Brush den Fill-Wert oder den Stroke-Wert eines Elements festlegen, empfiehlt es sich, den Brush.Opacity-Wert statt der Einstellung der Opacity-Eigenschaft des Elements festzulegen. Wenn die Opacity-Eigenschaft eines Elements geändert wird, erstellt WPF möglicherweise eine temporäre Oberfläche.
Navigation zu Objekt
Das NavigationWindow-Objekt wird von Window abgeleitet und erweitert es mit Inhaltsnavigationsunterstützung. Dabei werden in erster Linie NavigationService und das Journal aggregiert. Sie können den Clientbereich von NavigationWindow aktualisieren, indem Sie entweder einen Uniform Resource Identifier (URI) oder ein Objekt angeben. Im folgenden Beispiel werden beide Methoden veranschaulicht:
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;
}
Jedes NavigationWindow-Objekt verfügt über ein Journal, das den Navigationsverlauf des Benutzers in diesem Fenster aufzeichnet. Ein Zweck des Journals besteht darin, Benutzern das Zurückverfolgen ihrer Schritte zu ermöglichen.
Wenn Sie mit einem Uniform Resource Identifier (URI) navigieren, speichert das Journal nur den Uniform Resource Identifier (URI)-Verweis. Dies bedeutet, dass die Seite bei jedem erneuten Besuch dynamisch rekonstruiert wird, was je nach Komplexität der Seite sehr zeitaufwändig sein kann. In diesem Fall sind die Kosten für die Journalspeicherung zwar gering, der Zeitaufwand für die Wiederherstellung der Seite ist jedoch potenziell sehr hoch.
Wenn Sie mit einem Objekt navigieren, speichert das Journal die ganze visuelle Struktur des Objekts. Dies bedeutet, dass die Seite bei jedem erneuten Besuch sofort gerendert wird, ohne dass sie rekonstruiert werden muss. In diesem Fall sind die Kosten für die Journalspeicherung hoch, der Zeitaufwand für die Wiederherstellung der Seite ist jedoch gering.
Beim Verwenden des NavigationWindow-Objekts müssen Sie bedenken, wie durch die Journalunterstützung die Leistung der Anwendung beeinflusst wird. Weitere Informationen finden Sie unter Übersicht über die Navigation.
Treffertests für große 3D-Oberflächen
Die Treffertests für große 3D-Oberflächen stellen hinsichtlich der CPU-Auslastung einen sehr ressourcenintensiven Vorgang dar. Dies gilt insbesondere, wenn die 3D-Oberfläche animiert ist. Deaktivieren Sie die Treffertests, wenn Sie keine Treffertests für diese Oberflächen benötigen. Objekte, die von UIElement abgeleitet werden, können die Treffertests deaktivieren, indem sie die IsHitTestVisible-Eigenschaft auf false festlegen.
CompositionTarget.Rendering-Ereignis
Das CompositionTarget.Rendering-Ereignis bewirkt, dass WPF fortlaufend animiert. Wenn Sie dieses Ereignis verwenden, trennen Sie es bei jeder Gelegenheit.
Vermeiden der Verwendung von ScrollBarVisibility=Auto
Vermeiden Sie nach Möglichkeit die Verwendung des ScrollBarVisibility.Auto-Werts für die Eigenschaften HorizontalScrollBarVisibility und VerticalScrollBarVisibility. Diese Eigenschaften werden für RichTextBox-Objekte, ScrollViewer-Objekte und TextBox-Objekte sowie als angefügte Eigenschaft für das ListBox-Objekt definiert. Legen Sie stattdessen ScrollBarVisibility auf Disabled, Hidden oder Visible fest.
Der Auto-Wert ist für Fälle vorgesehen, in denen der Platz beschränkt ist und Symbolleisten nur bei Bedarf angezeigt werden sollen. Zum Beispiel kann es sinnvoll sein, diesen ScrollBarVisibility-Wert für ein ListBox mit 30 Elementen anstatt für ein TextBox mit Hunderten von Textzeilen zu verwenden.
Konfigurieren des Schriftartcachediensts zum Reduzieren der Startzeit
Der WPF-Schriftartcachedienst nutzt Schriftartdaten zwischen WPF-Anwendungen. Die erste WPF-Anwendung, die Sie ausführen, startet diesen Dienst, wenn er nicht bereits ausgeführt wird. Bei Windows Vista können Sie den Dienst "Windows Presentation Foundation (WPF)-Schriftartcache 3.0.0.0" von "Manuell" (Standard) auf "Automatisch (Verzögerter Start)" festlegen, um die anfängliche Startzeit von WPF-Anwendungen zu reduzieren.
Renderingverbesserungen für Terminaldienste
Mit einer Remotedesktopverbindung kann ein Client Anwendungen remote auf einem Server ausführen und gleichzeitig auf dem Client anzeigen. Der Server kann ein Windows-Terminalserver sein, der mehrere Remotedesktopverbindungen gleichzeitig bearbeiten kann. Es kann aber auch eine Version von Windows verwendet werden, die eine einzige Remotedesktopverbindung bearbeiten kann. Wenn ein Benutzer eine Anwendung über eine Remotedesktopverbindung ausführt, wird die Anwendung auf dem Server ausgeführt. Tastatur- und Mauseingaben am Client werden an den Server übertragen, während die resultierende Anwendungs-Benutzeroberfläche auf dem Server mit Bitmaps generiert wird, die an den Client übertragen werden.
Beim Senden von Bitmaps über ein Netzwerk an einen Client zur Simulation der Benutzeroberfläche wird jedoch nicht dieselbe Leistung erreicht wie bei einer Benutzeroberfläche, die lokal auf dem Client gerendert wird. Glücklicherweise können WPF-Anwendungen, die über eine Remotedesktopverbindung (Remote Desktop Connection, RDC)-Sitzung ausgeführt werden, die spezielle Renderingunterstützung in Windows Vista zum Rendern auf dem Client nutzen.
Um diese Unterstützung nutzen zu können, ist Folgendes erforderlich:
Auf dem Server muss Windows Vista Ultimate oder Windows Vista Enterprise installiert sein.
Der Server muss über ausreichend Arbeitsspeicher verfügen, um den Arbeitsspeicheranforderungen von Desktop Window Manager (DWM) zu entsprechen (andere DWM-Anforderungen, wie die für Videokarten, müssen nicht erfüllt werden).
Client und Server müssen denselben Build von Vista verwenden.
Der Client muss fähig sein, Windows Vista Desktop Window Manager (DWM) auszuführen. DWM wird aktiviert, wenn der Desktop Window Manager Sitzungs-Manager-Dienst ausgeführt wird.
Auf dem Client dürfen keine Anwendungen ausgeführt werden, die DWM deaktivieren können, beispielsweise Teamarbeit oder Remoteunterstützung.
Der Client kann nicht Mehrfachsprünge zum Server ausführen, der über die gewünschte WPF-Anwendung verfügt. Bei Mehrfachsprüngen wird immer eine Sitzung aus einer anderen Sitzung erstellt.
Die Konfiguration der Remotedesktopverbindung muss Folgendes einschließen:
Desktopzusammensetzung muss wie folgt ausgewählt werden: Remotedesktopverbindungen | Optionen | Erfahrung.
Designs müssen wie folgt ausgewählt werden: Remotedesktopverbindungen | Optionen | Erfahrung.
32-Bit-Farbe muss wie folgt ausgewählt werden: Remotedesktopverbindungen | Optionen | Anzeige | Farben.
Tipp
Weitere Informationen über die DWM-Anforderungen finden Sie unter Windows Vista Rules for Enabling Windows Aero.
Siehe auch
Konzepte
Optimieren der Leistung: Vorteile der Hardware nutzen
Optimieren der Leistung: Layout und Entwurf
Optimieren der Leistung: 2D-Grafiken und Bildverarbeitung
Optimieren der Leistung: Objektverhalten
Optimieren der Leistung: Anwendungsressourcen
Optimieren der Leistung: Datenbindung