WebView2 应用的处理模型

支持的平台:Win32、Windows 窗体、WinUI、WPF。

WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。 此浏览器进程模型在浏览器 体系结构 中介绍, 内部查看新式 Web 浏览器 (第 1 部分)

WebView2 运行时中的进程

WebView2 进程组是 WebView2 运行时进程的集合。 WebView2 进程组包括以下内容:

  • 单个浏览器进程。
  • 一个或多个呈现器进程。
  • 其他帮助程序进程,例如 GPU 进程和音频服务进程。

进程 1

WebView2 进程组中的进程数和状态可能会随着 WebView2 应用程序使用 WebView2 功能而更改。 (但是,WebView2 进程组中只有一个特定的浏览器进程。) 例如,从同 CoreWebView2Environment一个 创建新的 WebView2 实例,但属性中 Source 具有不同的域,通常会启动新的呈现器进程。

呈现器进程的数量可能因以下条件而异:

  • 在 WebView2 运行时中使用 站点隔离 功能。 请参阅 每帧呈现器进程 - 站点隔离

  • 在使用相同用户数据文件夹的 WebView2 实例中呈现的不同断开连接源的数目。

控制何时创建这些额外进程的逻辑取决于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 位于同一进程或不同进程中的对象,这一点是正确的。

处理进程事件和生存期

若要对浏览器和呈现器进程中的崩溃和挂起做出反应,请使用 ProcessFailedCoreWebView2事件。

若要安全地关闭关联的浏览器和呈现器进程,请使用 Close 方法 CoreWebView2Controller

若要打开 浏览器任务管理器,请调用 OpenTaskManagerWindow 方法。

将显示与 WebView2 的浏览器进程关联的所有进程,包括其关联的用途。

另请参阅