Condividi tramite


Ottimizzazione delle prestazioni: altri suggerimenti

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

Di seguito sono elencate le diverse sezioni di questo argomento:

  • 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

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 Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
            navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
        End Sub

        Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
            Dim nextPage As New NewPage()
            nextPage.InitializeComponent()
            navWindow.Content = nextPage
        End Sub
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 sulla navigazione.

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 disabilitarlo. Per gli oggetti che derivano da UIElement è possibile disabilitare 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

Tramite il 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.

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

Suggerimenti sulle animazioni