WebView2 應用程式的程式模型
支援的平臺:Win32、Windows Forms、WinUI、WPF。
WebView2 執行時間使用與 Microsoft Edge 瀏覽器相同的進程模型。 此瀏覽器程式模型的說明,請參 閱瀏覽器架構 內部 查看新式網頁瀏覽器 (第 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 瀏覽器程式相關聯的所有進程,包括其相關聯的用途。
另請參閱
- 在內部查看新式網頁瀏覽器 (第 1 部分) - WebView2 執行時間和 Microsoft Edge 瀏覽器所使用的瀏覽器程式模型。
- 開始使用 WebView2
- WebView2Samples 存放庫 - WebView2 功能的完整範例。
- WebView2 API 參考