Condividi tramite


Ottimizzazione delle prestazioni: altri suggerimenti

Aggiornamento: novembre 2007

In questo argomento vengono forniti ulteriori suggerimenti sulle prestazioni, in aggiunta a quelli riportati negli argomenti della sezione Ottimizzazione delle prestazioni di applicazioni WPF.

Nel presente argomento sono contenute le seguenti sezioni.

  • Pennelli opachi ed elementi opachi
  • Spostamento su un oggetto
  • Hit testing su superfici tridimensionali ampie
  • Evento CompositionTarget.Rendering
  • Evitare l'utilizzo di ScrollBarVisibility=Auto
  • Configurare il servizio Cache tipi di carattere per ridurre i tempi di avvio
  • Miglioramenti al rendering di Servizi terminal
  • Argomenti correlati

Pennelli opachi ed elementi opachi

Quando si utilizza un oggetto Brush per impostare l'oggetto Fill o Stroke di un elemento, è preferibile impostare il valore di Brush.Opacity anziché la proprietà Opacity dell'elemento. La modifica della proprietà Opacity di un elemento può determinare la creazione di un'area temporanea in WPF.

Spostamento su un oggetto

L'oggetto NavigationWindow deriva da Window e lo estende con il supporto per lo spostamento sul contenuto, principalmente mediante l'aggregazione di NavigationService e del journal. È possibile aggiornare l'area client di NavigationWindow specificando un Uniform Resource Identifier (URI) oppure un oggetto. Nell'esempio riportato di seguito vengono illustrati entrambi i metodi:

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;
}

Ciascun oggetto NavigationWindow dispone di un journal per la registrazione della cronologia degli spostamenti dell'utente in quella finestra. Uno degli scopi del journal è quello di consentire agli utenti di ritracciare i passaggi eseguiti.

Durante gli spostamenti tramite Uniform Resource Identifier (URI), nel journal viene archiviato solo il riferimento all'Uniform Resource Identifier (URI). Di conseguenza, ogni volta che quella stessa pagina viene visitata nuovamente, sarà ricostruita in modo dinamico; tale operazione può richiedere molto tempo, a seconda della complessità della pagina. In questo caso, il costo di archiviazione nel journal è basso, ma il tempo necessario per la ricostruzione della pagina è potenzialmente lungo.

Durante gli spostamenti tramite l'utilizzo di un oggetto, nel journal viene archiviata l'intera struttura ad albero visiva dell'oggetto. Pertanto, ogni volta che quella stessa pagina viene visitata nuovamente, viene eseguito immediatamente il rendering, senza che sia necessario ricostruirla. In questo caso, il costo di archiviazione nel journal è elevato, ma il tempo necessario per la ricostruzione della pagina è breve.

Quando si utilizza l'oggetto NavigationWindow, è necessario tenere presenti gli effetti del supporto di inserimento nel journal sulle prestazioni dell'applicazione. Per ulteriori informazioni, vedere Cenni preliminari sull'esplorazione.

Hit testing su superfici tridimensionali ampie

L'hit testing su superfici tridimensionali ampie richiede prestazioni particolarmente elevate in termini di consumo della CPU, soprattutto in caso di aggiunta di un'animazione alla superficie tridimensionale. Se l'hit testing su tali superfici non è necessario, è opportuno disattivarlo. Per gli oggetti che derivano da UIElement è possibile disattivare l'hit testing impostando la proprietà IsHitTestVisible su false.

Evento CompositionTarget.Rendering

L'evento CompositionTarget.Rendering determina l'aggiunta continua di animazione a WPF. Se si utilizza questo evento, disconnetterlo quando possibile.

Evitare l'utilizzo di ScrollBarVisibility=Auto

Quando possibile, evitare l'utilizzo del valore ScrollBarVisibility.Auto per le proprietà HorizontalScrollBarVisibility e VerticalScrollBarVisibility. Tali proprietà sono definite per gli oggetti RichTextBox, ScrollViewer, e TextBox e, come proprietà associata per l'oggetto ListBox. Impostare invece ScrollBarVisibility su Disabled, Hidden o Visible.

L'utilizzo del valore Auto è destinato ai casi in cui lo spazio è limitato e le barre di scorrimento devono essere visualizzate solo se necessario. Ad esempio, l'utilizzo di questo valore ScrollBarVisibility può rivelarsi utile con un oggetto ListBox di 30 elementi, ma non con un oggetto TextBox con centinaia di righe di testo.

Configurare il servizio Cache tipi di carattere per ridurre i tempi di avvio

Grazie al servizio Cache tipi di carattere di WPF, i dati relativi ai tipi di carattere vengono condivisi tra le applicazioni WPF. Il servizio viene avviato insieme alla prima applicazione WPF eseguita, a meno che non sia già in esecuzione. Se si sta utilizzando Windows Vista, è possibile modificare l'impostazione del servizio "Cache tipi di carattere Windows Presentation Foundation (WPF) 3.0.0.0" da "Manuale" (impostazione predefinita) ad "Automatico (Avvio ritardato)" per ridurre il tempo di avvio delle applicazioni WPF.

Miglioramenti al rendering di Servizi terminal

Una connessione desktop remoto consente a un client di eseguire le applicazioni da postazione remota su un server e di visualizzarle contemporaneamente sul client. Il server utilizzato può essere un Terminal Server Windows, in grado di gestire simultaneamente più connessioni desktop remoto, sia di una versione di Windows, in grado di gestire una sola connessione desktop remoto. Quando un utente esegue un'applicazione tramite una connessione desktop remoto, questa viene eseguita sul server; le operazioni effettuate sul client con la tastiera o con il mouse vengono trasmesse al server, mentre l'interfaccia utente dell'applicazione viene generata sul server sottoforma di bitmap che vengono trasmessi al client.

L'invio di bitmap a un client attraverso una rete per simulare un'interfaccia utente, tuttavia, non offre le prestazioni che si otterrebbero eseguendo il rendering dell'interfaccia utente localmente sul client. Le applicazioni WPF eseguite durante una sessione di connessione desktop remoto (RDC, Remote Desktop Connection) possono disporre di un supporto di rendering speciale in Windows Vista, per eseguire il rendering sul client.

Per utilizzare tale supporto, sono necessari i seguenti requisiti:

  • Il server deve essere stato installato con Windows Vista Ultimate oppure Windows Vista Enterprise.

  • Il server deve disporre di una memoria sufficiente a soddisfare i requisiti di Gestione finestre desktop. Non è necessario soddisfare altri requisiti di Gestione finestre desktop, relativi ad esempio alle schede video.

  • Il client deve presentare caratteristiche di compilazione di Vista analoghe a quelle del server.

  • Il client deve essere in grado di eseguire Gestione finestre desktop di Windows Vista. Gestione finestre desktop è attivo quando è in esecuzione Session Manager Service di Gestione finestre desktop.

  • Nel client non deve essere in esecuzione alcuna applicazione che possa disattivare Gestione finestre desktop, ad esempio Area riunioni virtuali o Assistenza remota.

  • Il client non è in grado di stabilire una connessione multihop con il server in cui si trova l'applicazione WPF desiderata. L'utilizzo di una sessione multihop implica la creazione di una sessione dall'altra.

  • La configurazione della connessione desktop remoto del client deve includere i seguenti passaggi:

    • Selezionare Composizione desktop in Connessione desktop remoto | Opzioni | Prestazioni.

    • Selezionare Temi in Connessione desktop remoto | Opzioni | Prestazioni.

    • Selezionare Colore a 32 bit in Connessione desktop remoto | Opzioni | Visualizza | Colori.

Nota

Per i requisiti di Gestione finestre desktop, vedere Windows Vista Rules for Enabling Windows Aero (informazioni in lingua inglese).

Vedere anche

Concetti

Pianificazione delle prestazioni dell'applicazione

Ottimizzazione delle prestazioni: sfruttare appieno l'hardware

Ottimizzazione delle prestazioni: layout e progettazione

Ottimizzazione delle prestazioni: grafica bidimensionale e creazione di immagini

Ottimizzazione delle prestazioni: comportamento degli oggetti

Ottimizzazione delle prestazioni: risorse di applicazioni

Ottimizzazione delle prestazioni: testo

Ottimizzazione delle prestazioni: associazione dati

Strumenti e risorse relativi alle prestazioni WPF

Suggerimenti sulle animazioni