Поделиться через


Модель процесса для приложений WebView2

Поддерживаемые платформы: Win32, Windows Forms, WinUI, WPF.

Среда выполнения WebView2 использует ту же модель процесса, что и браузер Microsoft Edge. Эта модель процесса браузера описана в разделе Архитектура браузера в разделе Внутренний взгляд на современный веб-браузер (часть 1).

Процессы в среде выполнения WebView2

Группа процессов WebView2 — это коллекция процессов среды выполнения WebView2. Группа процессов WebView2 включает в себя следующее:

  • Один процесс браузера.
  • Один или несколько процессов отрисовщика.
  • Другие вспомогательные процессы, такие как процесс GPU и процесс аудиослужбы.

Процесс 1

Количество и наличие процессов в группе процессов WebView2 может измениться по мере того, как приложение WebView2 использует функции WebView2. (Однако в группе процессов WebView2 существует только один конкретный процесс браузера.) Например, создание нового экземпляра WebView2 из того же CoreWebView2Environment, но с другим доменом в свойстве Source обычно запускает новый процесс отрисовщика.

Количество процессов отрисовщика может отличаться в зависимости от следующих условий:

Логика, управляющая созданием этих дополнительных процессов, зависит от архитектуры Chromium и выходит за рамки область среды выполнения WebView2.

Процессы среды выполнения WebView2 и папка данных пользователя

Все процессы в коллекции процессов среды выполнения WebView2 привязаны к процессу браузера, который, в свою очередь, связан с одной папкой данных пользователя. Если приложение использует несколько пользовательских папок данных, для каждой из этих папок данных пользователя будет создана коллекция процессов среды выполнения WebView2.

Папка данных пользователя может совместно использоваться несколькими приложениями, но обязательно рассмотрите последствия для производительности и управления, как описано в разделе Управление папками данных пользователя.

Процесс 2

Чтобы использовать несколько пользовательских папок данных, приложению WebView2 необходимо создать различные CoreWebView2Environment объекты. Экземпляр WebView2 создается для заданной папки данных пользователя с помощью настроенного CoreWebView2Environment объекта. Для каждого CoreWebView2Environment объекта необходимо настроить другое значение папки данных пользователя.

При создании первого WebView2 экземпляра для данной папки данных пользователя запускается процесс браузера для сбора процессов среды выполнения WebView2, связанной с этой папкой данных пользователя. Все дополнительные процессы будут управляться по времени существования этого процесса браузера.

Представляет CoreWebView2Environment папку данных пользователя и коллекцию связанных с ней процессов. Данный процесс отрисовщика не связан с одним CoreWebView2 экземпляром, так как процесс отрисовщика может обслуживать кадры в нескольких CoreWebView2 экземплярах, использующих одну папку данных пользователя, в зависимости от изоляции веб-сайта. См. раздел Процессы отрисовки для каждого кадра — изоляция сайта.

Несколько объектов среды

Если создать несколько объектов, настроенных CoreWebView2Environment одинаково (в том числе совместно использовать одну и ту же папку данных пользователя), они будут представлять одну и ту же папку данных пользователя и одну и ту же связанную коллекцию процессов. Используйте любой из этих CoreWebView2Environment объектов для создания CoreWebView2 с одной общей папкой данных пользователя и связанной коллекцией процессов.

Если вы попытаетесь создать с помощью пользовательской CoreWebView2Environment папки данных, которая уже используется другим CoreWebView2Environment пользователем, и не настроите два CoreWebView2Environment объекта одинаково, например, если они были созданы с разными CoreWebView2EnvironmentOptions.Language значениями, второй CoreWebView2Environment не сможет создать WebView2 объекты. Это справедливо для CoreWebView2Environment объектов, которые находятся в одном процессе или в разных процессах.

Обработка событий процесса и времени существования

Чтобы реагировать на сбои и зависания в процессах браузера и отрисовщика, используйте ProcessFailed событие CoreWebView2.

Чтобы безопасно завершить работу связанных процессов браузера и отрисовщика, используйте Close метод CoreWebView2Controller.

Чтобы открыть диспетчер задач браузера, вызовите OpenTaskManagerWindow метод .

Отображаются все процессы, связанные с браузерным процессом WebView2, включая связанные с ними цели.

См. также