WebView2 应用的处理模型
支持的平台:Win32、Windows 窗体、WinUI、WPF。
WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。 此浏览器进程模型在浏览器 体系结构 中介绍, 内部查看新式 Web 浏览器 (第 1 部分) 。
WebView2 运行时中的进程
WebView2 进程组是 WebView2 运行时进程的集合。 WebView2 进程组包括以下内容:
- 单个浏览器进程。
- 一个或多个呈现器进程。
- 其他帮助程序进程,例如 GPU 进程和音频服务进程。
WebView2 进程组中的进程数和状态可能会随着 WebView2 应用程序使用 WebView2 功能而更改。 (但是,WebView2 进程组中只有一个特定的浏览器进程。) 例如,从同 CoreWebView2Environment
一个 创建新的 WebView2 实例,但属性中 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 的浏览器进程关联的所有进程,包括其关联的用途。
另请参阅
- 在内部查看新式 Web 浏览器 (第 1 部分) - WebView2 运行时和 Microsoft Edge 浏览器使用的浏览器进程模型。
- WebView2 入门
- WebView2Samples 存储库 - WebView2 功能的综合示例。
- WebView2 API 参考