.NET桌面程序應用WebView2組件集成網頁開發3 WebView2的進程模型
- 2022 年 4 月 27 日
- 筆記
- .NET:WebView2, WebView2
WebView2 運行時使用與 Microsoft Edge 瀏覽器相同的進程模型。
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 應用程序需要創建不同的 CoreWebView2Environment 對象。 WebView2通過配置的對象為給定用戶數據文件夾創建CoreWebView2Environment實例。 每個 CoreWebView2Environment 對象都需要使用不同的用戶數據文件夾值進行配置。
為給定的用戶數據文件夾創建第一個WebView2實例時,將啟動與該用戶數據文件夾關聯的WebView2運行時進程集合的瀏覽器進程。所有其他進程都將在該瀏覽器進程的生命周期內進行管理。
CoreWebView2Environment代表一個用戶數據文件夾及其相關進程的集合。給定的渲染器進程與單個CoreWebView2實例不關聯,因為渲染器進程可以為使用同一用戶數據文件夾的多個CoreWebView2實例中的幀提供服務,具體取決於網站隔離。請參見每幀渲染器進程-站點隔離
若要對瀏覽器和渲染器進程中的崩潰和掛起做出反應,請使用 CoreWebView2 的 ProcessFailed 事件。
若要安全地關閉相關的瀏覽器和渲染器進程,請使用 CoreWebView2Controller 的 Close 方法。
若要打開瀏覽器任務管理器,請調用 OpenTaskManagerWindows 方法。
其他事件,請參考 WebView2 API。