Модель процесса для приложений WebView2
Поддерживаемые платформы: Win32, Windows Forms, WinUI, WPF.
Среда выполнения WebView2 использует ту же модель процесса, что и браузер Microsoft Edge. Эта модель процесса браузера описана в разделе Архитектура браузера в разделе Внутренний взгляд на современный веб-браузер (часть 1).
Процессы в среде выполнения WebView2
Группа процессов WebView2 — это коллекция процессов среды выполнения WebView2. Группа процессов WebView2 включает в себя следующее:
- Один процесс браузера.
- Один или несколько процессов отрисовщика.
- Другие вспомогательные процессы, такие как процесс GPU и процесс аудиослужбы.
Количество и наличие процессов в группе процессов WebView2 может измениться по мере того, как приложение WebView2 использует функции WebView2. (Однако в группе процессов WebView2 существует только один конкретный процесс браузера.) Например, создание нового экземпляра WebView2 из того же CoreWebView2Environment
, но с другим доменом в свойстве Source
обычно запускает новый процесс отрисовщика.
Количество процессов отрисовщика может отличаться в зависимости от следующих условий:
Использование функции изоляции сайта в среде выполнения WebView2. См. раздел Процессы отрисовки для каждого кадра — изоляция сайта.
Количество отдельных отключенных источников, отображаемых в экземплярах WebView2, использующих одну и ту же папку данных пользователя.
Логика, управляющая созданием этих дополнительных процессов, зависит от архитектуры Chromium и выходит за рамки область среды выполнения WebView2.
Процессы среды выполнения WebView2 и папка данных пользователя
Все процессы в коллекции процессов среды выполнения WebView2 привязаны к процессу браузера, который, в свою очередь, связан с одной папкой данных пользователя. Если приложение использует несколько пользовательских папок данных, для каждой из этих папок данных пользователя будет создана коллекция процессов среды выполнения WebView2.
Папка данных пользователя может совместно использоваться несколькими приложениями, но обязательно рассмотрите последствия для производительности и управления, как описано в разделе Управление папками данных пользователя.
Чтобы использовать несколько пользовательских папок данных, приложению 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, включая связанные с ними цели.
См. также
- Посмотрите на современный веб-браузер (часть 1) — модель процесса браузера, используемую средой выполнения WebView2 и браузером Microsoft Edge.
- Начало работы с WebView2
- Репозиторий WebView2Samples — исчерпывающий пример возможностей WebView2.
- Справочник по API WebView2