Compartilhar via


Otimizando o desempenho: Outras recomendações

Este tópico fornece recomendações de desempenho em adição às cobertas pelos tópicos na seção Optimizing WPF Application Performance.

Este tópico contém as seguintes seções.

  • Opacidade em pincéis versus opacidade em elementos
  • Navegação para objeto
  • Testes de colisão em grandes superfícies 3D
  • Evento CompositionTarget.Rendering
  • Evite usar ScrollBarVisibility = auto
  • Configurar o Serviço de cache da fonte para reduzir tempo inicialização
  • Aprimoramento de serviços de terminal renderização
  • Tópicos relacionados

Opacidade em pincéis versus opacidade em elementos

Quando você usa um Brush para definir o Fill ou Stroke de um elemento, é melhor definir o valor Brush.Opacity em vez de definir a propriedade Opacity do elemento. Modificar uma propriedade Opacity de um elemento pode fazer com que o WPF crie uma superfície temporária.

O objeto NavigationWindow deriva de Window e a estende com suporte de navegação de conteúdo, principalmente por agregar NavigationService e o diário. Você pode atualizar a área de cliente de NavigationWindow especificando um uniform resource identifier (URI) ou um objeto. O exemplo a seguir mostra os dois métodos:

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

Cada objeto NavigationWindow possui um diário que registra o histórico de navegação do usuário na janela. Uma das finalidades do diário é permitir que os usuários refaçam suas etapas.

Quando você navega usando um uniform resource identifier (URI), o diário armazena apenas a referência de uniform resource identifier (URI). Isso significa que sempre que você revisita a página, ela é dinamicamente reconstruída, que pode ser demorado dependendo da complexidade da página. Nesse caso, o custo de armazenamento do diário é baixo, mas o tempo para reconstituir a página é potencialmente alta.

Quando você navegar usando um objeto, o diário armazena a árvore visual inteira do objeto. Isso significa que sempre que você revisita a página, ele processa imediatamente sem precisar ser reconstruído. Nesse caso, o custo de armazenamento do diário é alto, mas o tempo para reconstituir a página é baixo.

Quando você usa o objeto NavigationWindow, você precisará ter em mente como o suporte de diário impacta o desempenho do seu aplicativo. Para obter mais informações, consulte Visão geral de navegação.

Testes de colisão em grandes superfícies 3D

Teste de colisão em superfícies 3D grandes é uma operação intensa de desempenho em termos de consumo CPU. Isso é especialmente verdadeiro quando a superfície 3D é animada. Se você não precisar de testes de colisão nessas superfícies, então, desative os testes de colisão. Os objetos são derivados de UIElement podem desativar testes de colisão definindo a propriedade IsHitTestVisible para false.

Evento CompositionTarget.Rendering

O evento CompositionTarget.Rendering faz com que WPF anime continuamente Se você usar esse evento, separe-o em cada oportunidade.

Evite usar ScrollBarVisibility = auto

Sempre que possível, evite usar o valor ScrollBarVisibility.Auto para a propriedade HorizontalScrollBarVisibility e VerticalScrollBarVisibility. Essas propriedades são definidas para objetos RichTextBox, ScrollViewer e TextBox e como uma propriedade anexada para o objeto ListBox. Em vez disso, defina ScrollBarVisibility para Disabled, Hidden, ou Visible.

O valor Auto é para casos quando espaço é limitado e barras de rolagem devem ser exibida somente quando necessário. Por exemplo, talvez seja útil para usar esse valor ScrollBarVisibility com um ListBox de 30 itens em oposição a uma TextBox com centenas de linhas de texto.

Configurar o Serviço de cache da fonte para reduzir tempo inicialização

O serviço de cache de fontes do WPF compartilha dados de fontes entre aplicativos WPF. O primeiro aplicativo WPF que você executa inicia este serviço se o serviço não estiver em execução. Se você estiver usando Windows Vista, você pode definir o serviço "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" de "manual" (o padrão) para" automático (Iniciar atrasado)" para reduzir o tempo inicial de inicialização dos aplicativos WPF.

Aprimoramento de serviços de terminal renderização

Uma conexão de área de trabalho remota permite que um cliente execute aplicativos remotamente em um servidor ao exibi-las no cliente. O servidor pode ser um Windows Terminal Server, que é capaz de atender várias conexões de áreas de trabalhos remotas simultânea, ou uma versão do Windows, que pode atender uma única conexão de área de trabalho remota. Quando um usuário executa um aplicativo por meio de uma conexão Remota da Área de trabalho, o aplicativo executado no servidor; Atividade de teclado e mouse no cliente é transmitida para o servidor, enquanto o aplicativo UI resultante é gerado no servidor como bitmaps que são transmitidos para o cliente.

Enviar bitmaps através de uma rede para um cliente para simular uma interface do usuário, no entanto, não tem o mesmo desempenho de um UI renderizar localmente no cliente. Felizmente, aplicativos WPF que são executados em uma sessão Conexão de Área de Trabalho Remota (RDC) podem aproveitar esse suporte especial de renderização no Windows Vista para renderizar no cliente.

Para poder tirar vantagem, é necessário:

  • O servidor deve ser instalado com o Windows Vista Ultimate ou Windows Vista Enterprise.

  • O servidor deve ter memória suficiente para atender aos requisitos de memória do Gerenciador de Janelas da Área de Trabalho (DWM) (outros requisitos DWM, como para placas de vídeo, não precisam ser atendidos).

  • O cliente deve ter a mesma versão do Vista que o servidor.

  • O cliente deve ser capaz executar o Windows Vista Desktop Window Manager (DWM). DWM é ativado quando o serviço Gerenciador de Sessão Gerenciador de Janelas da Área de Trabalho está sendo executado.

  • O cliente deve não estar executando o aplicativos que podem desativar o DWM, como o Meeting SPACE ou Remote Assistance.

  • O cliente não pode fazer multi-hop para o servidor que tenha o aplicativo WPF desejado. Multi-hopping significa criar uma sessão a partir de outra,

  • Configuração do cliente da Conexão da área de trabalho remota deve incluir o seguinte:

    • Composição de área de trabalho deve estar selecionada no Conexão remota de área de trabalho | Opções | Experiência.

    • Temas devem ser selecionados em Conexões de área de trabalho remota | opções | experiência.

    • cores 32 bit deve estar selecionado no Conexões de área de trabalho remota | Opções | Exibir | Cores.

ObservaçãoObservação:

Consulte Windows Vista regras para habilitar o Windows Aero para atender aos requisitos de DWM.

Consulte também

Conceitos

Planejando para desempenho de aplicativos

Otimizando o desempenho: Levando vantagens de hardware

Otimizando o desempenho: Layout and Design

Otimizando o desempenho: 2D Graphics and Imaging

Otimizando o desempenho: Comportamento de objeto

Otimizando o desempenho: Recursos do aplicativo

Otimizando o desempenho: Texto

Otimizando o desempenho: Ligação de Dados

Ferramentas de Desempenho e Recursos do WPF

Dicas e truques de animação