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.
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:
Uso do recurso Isolamento de Site no Runtime do WebView2. Consulte Processos de renderizador por quadro – Isolamento do Site.
O número de origens desconectadas distintas que são renderizadas em instâncias do WebView2 que usam a mesma pasta de dados de usuário.
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.
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
- Visão interna do navegador moderno (parte 1) – o modelo de processo do navegador usado pelo WebView2 Runtime e pelo navegador Microsoft Edge.
- Introdução ao WebView2
- Repositório WebView2Samples – um exemplo abrangente de recursos do WebView2.
- Referência de API do WebView2