WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型。

WebView2 运行时中的进程

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

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

当WebView2应用程序使用WebView2功能时,WebView2进程组中进程的数量和存在可能会发生变化。(但是,WebView2进程组中只有一个特定的浏览器进程。)例如,从同一个 CoreWebView2Environment 市里创建新的WebView2实例,但在源属性中使用不同的域,通常会启动一个新的渲染器进程。

渲染器进程的数量可能会根据以下情况而变化:

  • 在WebView2运行时中使用站点隔离功能。请参见每帧渲染器进程-站点隔离
  • 在使用同一用户数据文件夹的WebView2实例中呈现的不同断开连接的源的数量。

控制何时创建这些额外进程的逻辑取决于Chromium体系结构,并且超出了 WebView2 运行时的范围。

下面是在真实项目中测试的结果

(1)电脑关机,重新开机,未运行Edge浏览器,且未运行与WebView2相关的宿主应用程序。

后台进程中有5个默认Edge进程在运行

(2)运行“建筑工程施工图AI审查系统”,其中红色框内是使用WebView2组件加载的网页应用

任务管理器中,进程“Zjgsgts.Sczj”下启动了7个WebView2的子进程

其中某个第1个、第2个进程是渲染器进程,因为三维模型的渲染过程消耗的内存较多。第3、4、5、6、7是GPU进程或者其他帮助类程序进程。

而浏览器进程依然为5个,说明其中一个是 WebView2 进程组中的浏览器进程。

在宿主程序的根目录下多了两个文件夹

  • runtimes 目录

    • 结构如下图,包含一个WebView2运行时加载器组件  WebView2Loader.dll 。

  •  Zjgsgtsc.Sczj.exe.WebView2 目录

    • 结构图下图,里面包含运行过程中其他的辅助配置信息以及缓存等信息
关于该目录信息,在后续的博客中会详解介绍。
WebView2 运行时进程和用户数据文件夹

  WebView2 运行时进程集合中的所有进程都绑定到浏览器进程,而浏览器进程又与单个用户数据文件夹相关联。 如果应用程序使用多个用户数据文件夹,将为每个用户数据文件夹创建 WebView2 运行时进程的集合。

  用户数据文件夹可由多个应用程序共享,但请务必考虑对性能和管理的影响,如“管理用户数据”文件夹中所述。

  若要使用多个用户数据文件夹,WebView2 应用程序需要创建不同的 CoreWebView2Environment 对象。 WebView2通过配置的对象为给定用户数据文件夹创建CoreWebView2Environment实例。 每个 CoreWebView2Environment 对象都需要使用不同的用户数据文件夹值进行配置。

  为给定的用户数据文件夹创建第一个WebView2实例时,将启动与该用户数据文件夹关联的WebView2运行时进程集合的浏览器进程。所有其他进程都将在该浏览器进程的生命周期内进行管理。

  CoreWebView2Environment代表一个用户数据文件夹及其相关进程的集合。给定的渲染器进程与单个CoreWebView2实例不关联,因为渲染器进程可以为使用同一用户数据文件夹的多个CoreWebView2实例中的帧提供服务,具体取决于网站隔离。请参见每帧渲染器进程-站点隔离

处理进程事件和生命周期

若要对浏览器和渲染器进程中的崩溃和挂起做出反应,请使用 CoreWebView2 的 ProcessFailed 事件。

若要安全地关闭相关的浏览器和渲染器进程,请使用 CoreWebView2Controller 的 Close 方法。

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

其他事件,请参考 WebView2 API

.NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型的更多相关文章

  1. .NET桌面程序应用WebView2组件集成网页开发4 WebView2的线程模型

    系列目录     [已更新最新开发文章,点击查看详细] WebView2控件基于组件对象模型(COM),必须在单线程单元(STA)线程上运行. 线程安全 WebView2必须在使用消息泵的UI线程上创 ...

  2. 组件化网页开发 / 步骤一 · 4-4 匹配HTML标签

    组件化网页开发 / 步骤一 · 4-4 匹配HTML标签

  3. 组件化网页开发 / 步骤二 · 2-11 jquery的ajax方法 以及下一章跨域没懂

    1,根据2-11课程老师的提示,自己封装 $.ajax 2,第三章,跨域,没看懂

  4. .NET桌面程序集成Web网页开发的多种解决方案

    系列目录     [已更新最新开发文章,点击查看详细] B/S架构的Web程序几乎占据了应用软件的绝大多数市场,但是C/S架构的WinForm.WPF客户端程序依然具有很实用的价值,如设计类软件 Au ...

  5. 网页程序 vs 桌面程序

    网页程序 vs 桌面程序 阅读:  评论:  作者:Rybby  日期:  来源:rybby.com 所谓的网页程序就是指以网页作为程序的操作界面,通过脚本语言“javascript”或其它客户端语言 ...

  6. JRE“瘦身”&桌面程序集成JRE

    项目是一个桌面程序,程序文件不大,但运行jre有198 MB,因此需要"瘦身". jre包含bin.lib两部分,分别为93.6 MB.104 MB. 1.精简bin 运行桌面程序 ...

  7. 桌面程序的其他实现方式----使用WPF窗体展现网页

    需求 在WPF应用程序中,需要使用到WEB项目的资源,第一时间想到的就是在WPF窗口中,展现WEB项目中的页面,这样子有两点好处:一是,实现简单,不需要在WPF应用程序中实现UI布局和数据绑定:二是, ...

  8. DELPHI编写服务程序总结(在系统服务和桌面程序之间共享内存,在服务中使用COM组件)

    DELPHI编写服务程序总结 一.服务程序和桌面程序的区别 Windows 2000/XP/2003等支持一种叫做“系统服务程序”的进程,系统服务和桌面程序的区别是:系统服务不用登陆系统即可运行:系统 ...

  9. 放弃 Electron,拥抱 WebView2!JavaScript 快速开发独立 EXE 程序

    Electron 不错,但也不是完美的. Electron 带来了很多优秀的桌面软件,但并不一定总是适合我们的需求. 多个选择总是好事! 我使用 Electron 遇到的一些麻烦 1.Electron ...

随机推荐

  1. python爬虫 Selenium库学习

    一.自动化测试工具,支持多种浏览器,解决JS渲染问题 二.安装 pip3 install Selenium 三.操作介绍(因为是学习别人的课程为了尊重知识产权,部分代码就不显示了) 1驱动浏览器 br ...

  2. mybatis中jdbcType和javaType

    1.MyBatis 通过包含的jdbcType类型 BIT.FLOAT.CHAR .TIMESTAMP . OTHER .UNDEFINEDTINYINT .REAL .VARCHAR .BINARY ...

  3. Springmvc入门基础(二) ---架构详解

    1.框架结构图 架构流程文字说明 用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器. 处理器映射器根据 ...

  4. Auth0案例学习(SpringMVC形式)

    官方SpringMVC示例Github:https://github.com/auth0-samples/auth0-spring-mvc-sample/tree/master/01-Login Ma ...

  5. 构造器注入和 setter 依赖注入,那种方式更好?

    每种方式都有它的缺点和优点.构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖.如果使用 XML 来描述依赖, Setter 注入的可读写会更强.经验法则是强制 ...

  6. 学习Haproxy (七)

    haproxy是个高性能的tcp和http的反向代理.它就是个代理.不像nginx还做web服务器 官网地址为www.haproxy.org nginx的优点和缺点 ? 1 2 3 4 5 6 7 8 ...

  7. 解决Project出来的问题

    问题显现: 解决办法: 恢复默认布局

  8. 如何0代码实现多人音视频通话?【内附源码/Demo】

    3月15日新增"1860+1194",全国进入了抗疫关键时期.响应政策多地采取了社会面清零策略. 3月14日零点,深圳按下了暂停键. 应疫情防控要求,深圳全市暂停生产经营活动,严格 ...

  9. 针对于iosAPP内嵌H5,-webit-overflow-scrolling:touch;产生空白情况

    问题描述:一个内嵌IOSAPP的H5页面,长页面,大概1.6个屏幕高度,由于有列表滑动起来很不流畅,所以用了-webit-overflow-scrolling:touch;这个只针对ios端的物理滚动 ...

  10. iView 一周年了,同时发布了 2.0 正式版,但这只是开始...

    两年前,我开始接触 Vue.js 框架,当时就被它的轻量.组件化和友好的 API 所吸引.之后我将 Vue.js 和 Webpack 技术栈引入我的公司(TalkingData)可视化团队,并经过一年 ...