WebView2 アプリのプロセス モデル
サポートされているプラットフォーム: Win32、Windows フォーム、WinUI、WPF。
WebView2 ランタイムは、Microsoft Edge ブラウザーと同じプロセス モデルを使用します。 このブラウザー プロセス モデルについては、「最新の Web ブラウザーを見る (パート 1)」の「ブラウザー アーキテクチャ」を参照してください。
WebView2 ランタイム内のプロセス
WebView2 プロセス グループは、WebView2 ランタイム プロセスのコレクションです。 WebView2 プロセス グループには、次のものが含まれます。
- 1 つのブラウザー プロセス。
- 1 つ以上のレンダラー プロセス。
- GPU プロセスやオーディオ サービス プロセスなど、他のヘルパー プロセス。
WebView2 アプリケーションが WebView2 機能を利用すると、WebView2 プロセス グループ内のプロセスの数と存在が変わる可能性があります。 (ただし、WebView2 プロセス グループには、特定のブラウザー プロセスが 1 つだけ存在します)。たとえば、同じ CoreWebView2Environment
から新しい WebView2 インスタンスを作成しますが、プロパティに別のドメインがある Source
場合、通常は新しいレンダラー プロセスが開始されます。
レンダラー プロセスの数は、次の条件によって異なる場合があります。
WebView2 ランタイムでの サイト分離 機能の使用。 「フレームごとのレンダラー プロセス - サイト分離」を参照してください。
同じユーザー データ フォルダーを使用する WebView2 のインスタンスでレンダリングされる個別の切断された配信元の数。
これらの余分なプロセスをいつ作成するかを制御するロジックは、Chromium アーキテクチャによって異なり、WebView2 ランタイムの範囲外です。
WebView2 ランタイム プロセスとユーザー データ フォルダー
WebView2 ランタイム プロセス コレクション内のすべてのプロセスはブラウザー プロセスに関連付けられ、そのプロセスは 1 つのユーザー データ フォルダーに関連付けられます。 アプリケーションで複数のユーザー データ フォルダーを使用する場合、これらのユーザー データ フォルダーごとに WebView2 ランタイム プロセスのコレクションが作成されます。
ユーザー データ フォルダーは複数のアプリケーションで共有できますが、「 ユーザー データ フォルダーの管理」の説明に従って、パフォーマンスと管理への影響を考慮してください。
複数のユーザー データ フォルダーを使用するには、WebView2 アプリケーションで異なる CoreWebView2Environment
オブジェクトを作成する必要があります。
WebView2
インスタンスは、構成されたCoreWebView2Environment
オブジェクトを使用して、特定のユーザー データ フォルダーに対して作成されます。 各 CoreWebView2Environment
オブジェクトは、異なるユーザー データ フォルダー値で構成する必要があります。
特定のユーザー データ フォルダーに対して最初 WebView2
のインスタンスが作成されると、そのユーザー データ フォルダーに関連付けられている WebView2 Runtime プロセス コレクションのブラウザー プロセスが開始されます。 追加のすべてのプロセスは、そのブラウザー プロセスの有効期間によって管理されます。
は CoreWebView2Environment
、ユーザー データ フォルダーと、それに関連付けられているプロセスのコレクションを表します。 レンダラー プロセスは、Web サイトの分離に応じて、同じユーザー データ フォルダーを使用する複数CoreWebView2
のインスタンス内のフレームを処理できるため、特定のレンダラー プロセスは 1 つのCoreWebView2
インスタンスに関連付けされません。
「フレームごとのレンダラー プロセス - サイト分離」を参照してください。
複数の環境オブジェクト
同じ方法で構成された複数 CoreWebView2Environment
のオブジェクト (同じユーザー データ フォルダーの共有を含む) を作成すると、同じユーザー データ フォルダーと同じ関連するプロセスのコレクションが表されます。 これらの CoreWebView2Environment
オブジェクトのいずれかを使用して、1 つの共有ユーザー データ フォルダーと関連するプロセスのコレクションを使用して を作成 CoreWebView2
します。
別CoreWebView2Environment
のオブジェクトが既に使用しているユーザー データ フォルダーを使用して を作成CoreWebView2Environment
しようとして、2 つのCoreWebView2Environment
オブジェクトを同じに構成しない場合 (たとえば、異なるCoreWebView2EnvironmentOptions.Language
値で作成された場合)、2 つ目CoreWebView2Environment
のオブジェクトは作成WebView2
されません。 これは、同じプロセス内または異なるプロセス内のオブジェクトに当てはまります CoreWebView2Environment
。
プロセス イベントと有効期間の処理
ブラウザーとレンダラー のプロセスでクラッシュやハングに対応するには、 のCoreWebView2
イベントをProcessFailed
使用します。
関連付けられているブラウザーとレンダラー のプロセスを安全にシャットダウンするには、 のCoreWebView2Controller
メソッドをClose
使用します。
ブラウザー タスク マネージャーを開くには、 メソッドをOpenTaskManagerWindow
呼び出します。
WebView2 のブラウザー プロセスに関連付けられているすべてのプロセスが、関連する目的を含めて表示されます。
関連項目
- 最新の Web ブラウザー (パート 1) - WebView2 ランタイムと Microsoft Edge ブラウザーで使用されるブラウザー プロセス モデルを見てみましょう。
- WebView2 の概要
- WebView2Samples リポジトリ - WebView2 機能の包括的な例。
- WebView2 API リファレンス