Partager via


Modèle de processus pour les applications WebView2

Plateformes prises en charge : Win32, Windows Forms, WinUI, WPF.

Le runtime WebView2 utilise le même modèle de processus que le navigateur Microsoft Edge. Ce modèle de processus de navigateur est décrit dans Architecture du navigateur dans Vue d’intérieur du navigateur web moderne (partie 1).

Processus dans le runtime WebView2

Un groupe de processus WebView2 est une collection de processus Runtime WebView2. Un groupe de processus WebView2 comprend les éléments suivants :

  • Processus de navigateur unique.
  • Un ou plusieurs processus de renderer.
  • Autres processus d’assistance, tels que le processus GPU et le processus du service audio.

Processus 1

Le nombre et la présence de processus dans un groupe de processus WebView2 peuvent changer à mesure qu’une application WebView2 utilise les fonctionnalités WebView2. (Toutefois, il n’existe qu’un seul processus de navigateur spécifique dans un groupe de processus WebView2.) Par exemple, la création d’un instance WebView2 à partir du même CoreWebView2Environment, mais avec un domaine différent dans la Source propriété , démarre généralement un nouveau processus de renderer.

Le nombre de processus de renderer peut varier en fonction des conditions suivantes :

  • Utilisation de la fonctionnalité d’isolation de site dans le runtime WebView2. Consultez Processus de renderer par image - Isolation de site.

  • Nombre d’origines distinctes déconnectées qui sont rendues dans des instances de WebView2 qui utilisent le même dossier de données utilisateur.

La logique qui contrôle le moment où ces processus supplémentaires sont créés dépend de l’architecture Chromium et dépasse le cadre du runtime WebView2.

Processus d’exécution WebView2 et dossier de données utilisateur

Tous les processus d’une collection de processus runtime WebView2 sont liés au processus du navigateur, qui à son tour est associé à un seul dossier de données utilisateur. Si une application utilise plusieurs dossiers de données utilisateur, une collection de processus WebView2 Runtime est créée pour chacun de ces dossiers de données utilisateur.

Un dossier de données utilisateur peut être partagé par plusieurs applications, mais veillez à prendre en compte les implications sur les performances et la gestion, comme décrit dans Gérer les dossiers de données utilisateur.

Processus 2

Pour utiliser plusieurs dossiers de données utilisateur, une application WebView2 doit créer différents CoreWebView2Environment objets. Un WebView2 instance est créé pour un dossier de données utilisateur donné via l’objet configuréCoreWebView2Environment. Chaque CoreWebView2Environment objet doit être configuré avec une valeur de dossier de données utilisateur différente.

Lorsque la première WebView2 instance est créée pour un dossier de données utilisateur donné, le processus de navigateur pour le runtime WebView2 traite la collection associée à ce dossier de données utilisateur est démarré. Tous les processus supplémentaires seront gérés par la durée de vie de ce processus de navigateur.

représente CoreWebView2Environment un dossier de données utilisateur et la collection de processus qui lui sont associés. Un processus de renderer donné n’est pas associé à un seul CoreWebView2 instance, car le processus de renderer peut servir des images dans plusieurs CoreWebView2 instances qui utilisent le même dossier de données utilisateur, en fonction de l’isolation du site web. Consultez Processus de renderer par image - Isolation de site.

Objets d’environnement multiples

Si vous créez plusieurs CoreWebView2Environment objets configurés de la même façon (y compris le partage du même dossier de données utilisateur), ils représentent le même dossier de données utilisateur et la même collection de processus associée. Utilisez l’un de ces CoreWebView2Environment objets pour créer un CoreWebView2 avec le dossier de données utilisateur partagé et la collection de processus associée.

Si vous essayez de créer un CoreWebView2Environment à l’aide d’un dossier de données utilisateur qu’un autre CoreWebView2Environment utilise déjà, et que vous ne configurez pas les deux CoreWebView2Environment objets de la même façon, par exemple s’ils ont été créés avec des valeurs différentes CoreWebView2EnvironmentOptions.Language , le deuxième CoreWebView2Environment ne parvient pas à créer WebView2 des objets. Cela est vrai pour CoreWebView2Environment les objets qui se trouvent dans le même processus ou dans des processus différents.

Gestion des événements de processus et de la durée de vie

Pour réagir aux incidents et aux blocages dans le navigateur et les processus de renderer, utilisez l’événement ProcessFailed de CoreWebView2.

Pour arrêter en toute sécurité les processus de navigateur et de renderer associés, utilisez la Close méthode de CoreWebView2Controller.

Pour ouvrir le Gestionnaire des tâches du navigateur, appelez la OpenTaskManagerWindow méthode .

Tous les processus associés au processus de navigateur de votre WebView2 sont affichés, y compris les objectifs associés.

Voir aussi