WebView2 アプリのプロセス モデル

サポートされているプラットフォーム: Win32、Windows フォーム、WinUI、WPF。

WebView2 ランタイムは、Microsoft Edge ブラウザーと同じプロセス モデルを使用します。 このブラウザー プロセス モデルについては、「最新の Web ブラウザーを見る (パート 1)」のブラウザー アーキテクチャ」を参照してください。

WebView2 ランタイム内のプロセス

WebView2 プロセス グループは、WebView2 ランタイム プロセスのコレクションです。 WebView2 プロセス グループには、次のものが含まれます。

  • 1 つのブラウザー プロセス。
  • 1 つ以上のレンダラー プロセス。
  • GPU プロセスやオーディオ サービス プロセスなど、他のヘルパー プロセス。

プロセス 1

WebView2 アプリケーションが WebView2 機能を利用すると、WebView2 プロセス グループ内のプロセスの数と存在が変わる可能性があります。 (ただし、WebView2 プロセス グループには、特定のブラウザー プロセスが 1 つだけ存在します)。たとえば、同じ CoreWebView2Environmentから新しい WebView2 インスタンスを作成しますが、プロパティに別のドメインがある Source 場合、通常は新しいレンダラー プロセスが開始されます。

レンダラー プロセスの数は、次の条件によって異なる場合があります。

これらの余分なプロセスをいつ作成するかを制御するロジックは、Chromium アーキテクチャによって異なり、WebView2 ランタイムの範囲外です。

WebView2 ランタイム プロセスとユーザー データ フォルダー

WebView2 ランタイム プロセス コレクション内のすべてのプロセスはブラウザー プロセスに関連付けられ、そのプロセスは 1 つのユーザー データ フォルダーに関連付けられます。 アプリケーションで複数のユーザー データ フォルダーを使用する場合、これらのユーザー データ フォルダーごとに WebView2 ランタイム プロセスのコレクションが作成されます。

ユーザー データ フォルダーは複数のアプリケーションで共有できますが、「 ユーザー データ フォルダーの管理」の説明に従って、パフォーマンスと管理への影響を考慮してください。

プロセス 2

複数のユーザー データ フォルダーを使用するには、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 のブラウザー プロセスに関連付けられているすべてのプロセスが、関連する目的を含めて表示されます。

関連項目