Compartilhar via


Modelo de processo para aplicativos WebView2

Plataformas com suporte: Win32, Windows Forms, WinUI, WPF.

O WebView2 Runtime usa o mesmo modelo de processo que o navegador Microsoft Edge. Este modelo de processo do navegador é descrito na Arquitetura do Navegador no Inside, veja o navegador da Web moderno (parte 1).

Processos no Runtime do WebView2

Um grupo de processos Do WebView2 é uma coleção de processos do WebView2 Runtime. Um grupo de processos do WebView2 inclui o seguinte:

  • Um único processo de navegador.
  • Um ou mais processos de renderizador.
  • Outros processos auxiliares, como o processo de GPU e o processo de serviço de áudio.

Processo 1

O número e a presença de processos em um grupo de processos do WebView2 podem ser alterados à medida que um aplicativo WebView2 faz uso de recursos do WebView2. (No entanto, há apenas um único processo de navegador específico em um grupo de processos do WebView2.) Por exemplo, criar uma nova instância do WebView2 do mesmo CoreWebView2Environment, mas com um domínio diferente na Source propriedade, geralmente iniciará um novo processo de renderizador.

O número de processos do renderizador pode variar de acordo com as seguintes condições:

A lógica que controla quando esses processos extras são criados depende da arquitetura Chromium e está além do escopo do WebView2 Runtime.

Processos do WebView2 Runtime e a pasta de dados do usuário

Todos os processos em uma coleção de processos do WebView2 Runtime estão vinculados ao processo do navegador, que por sua vez está associado a uma única pasta de dados do usuário. Se um aplicativo usar várias pastas de dados do usuário, uma coleção de processos do WebView2 Runtime será criada para cada uma dessas pastas de dados do usuário.

Uma pasta de dados do usuário pode ser compartilhada por vários aplicativos, mas considere as implicações no desempenho e no gerenciamento, conforme descrito em Gerenciar pastas de dados do usuário.

Processo 2

Para usar várias pastas de dados do usuário, um aplicativo WebView2 precisa criar objetos diferentes CoreWebView2Environment . Uma WebView2 instância é criada para uma determinada pasta de dados de usuário por meio do objeto configurado CoreWebView2Environment . Cada CoreWebView2Environment objeto precisa ser configurado com um valor de pasta de dados de usuário diferente.

Quando a primeira WebView2 instância for criada para uma determinada pasta de dados do usuário, o processo do navegador para a coleção de processos do WebView2 Runtime associado à pasta de dados do usuário será iniciado. Todos os processos adicionais serão gerenciados pelo tempo de vida desse processo de navegador.

O CoreWebView2Environment representa uma pasta de dados do usuário e a coleção de processos associados a ela. Um determinado processo renderizador não está associado a uma única CoreWebView2 instância, pois o processo do renderizador pode servir quadros em várias CoreWebView2 instâncias que usam a mesma pasta de dados de usuário, dependendo do isolamento do site. Consulte Processos de renderizador por quadro – Isolamento do Site.

Vários objetos de ambiente

Se você criar vários CoreWebView2Environment objetos configurados da mesma maneira (incluindo o compartilhamento da mesma pasta de dados do usuário), eles representarão a mesma pasta de dados de usuário e a mesma coleção de processos associados. Use qualquer um desses CoreWebView2Environment objetos para criar um CoreWebView2 com a pasta de dados de usuário compartilhada e a coleção de processos associados.

Se você tentar criar uma CoreWebView2Environment pasta de dados de usuário que outra CoreWebView2Environment já está usando e não configurar os dois CoreWebView2Environment objetos da mesma forma, por exemplo, se eles foram criados com valores diferentes CoreWebView2EnvironmentOptions.Language , o segundo CoreWebView2Environment não criará WebView2 objetos. Isso é verdadeiro para CoreWebView2Environment objetos que estão no mesmo processo ou em processos diferentes.

Manipulando eventos de processo e tempo de vida

Para reagir a falhas e travas nos processos do navegador e do renderizador, use o ProcessFailed evento de CoreWebView2.

Para desligar com segurança os processos associados ao navegador e ao renderizador, use o Close método de CoreWebView2Controller.

Para abrir o Gerenciador de Tarefas do Navegador, chame o OpenTaskManagerWindow método.

Todos os processos associados ao processo do navegador do Seu WebView2 são exibidos, incluindo seus propósitos associados.

Confira também