Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

AppDomain, classe

Représente un domaine d'application qui est un environnement isolé dans lequel s'exécutent les applications. Cette classe ne peut pas être héritée.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public sealed class AppDomain : MarshalByRefObject, 
	_AppDomain, IEvidenceFactory

Le type AppDomain expose les membres suivants.

  NomDescription
Propriété publiqueActivationContextObtient le contexte d'activation du domaine d'application actuel.
Propriété publiqueApplicationIdentityObtient l'identité de l'application dans le domaine d'application.
Propriété publiqueApplicationTrustObtient des informations qui décrivent les autorisations accordées à une application et indiquent si l'application possède un niveau de confiance qui lui permet de s'exécuter.
Propriété publiqueBaseDirectoryObtient le répertoire de base qu'utilise le programme de résolution d'assembly pour détecter les assemblys.
Propriété publiqueMembre statiquePris en charge par XNA FrameworkCurrentDomainObtient le domaine d'application actuel pour le Thread en cours.
Propriété publiqueDomainManagerObtient le gestionnaire de domaine qui a été fourni par l'hôte lorsque le domaine d'application a été initialisé.
Propriété publiqueDynamicDirectoryObtient le répertoire utilisé par le programme de résolution d'assembly pour détecter les assemblys créés de manière dynamique.
Propriété publiqueEvidenceObtient le Evidence associé à ce domaine d'application.
Propriété publiquePris en charge par XNA FrameworkFriendlyNameObtient le nom convivial de ce domaine d'application.
Propriété publiqueIdObtient un entier qui identifie de façon unique le domaine d'application au sein du processus.
Propriété publiqueIsFullyTrustedObtient une valeur qui indique si les assemblys chargés dans le domaine d'application actuel s'exécutent avec la confiance totale.
Propriété publiqueIsHomogenousObtient une valeur qui indique si le domaine d'application actuel dispose d'un jeu d'autorisations accordé à tous les assemblys chargés dans le domaine d'application.
Propriété publiqueMembre statiqueMonitoringIsEnabledObtient ou définit une valeur qui indique si l'analyse de la mémoire et du processeur des domaines d'application est activée pour le processus actuel. Lorsque l'analyse a été activée pour un processus, elle ne peut plus être désactivée.
Propriété publiqueMonitoringSurvivedMemorySizeObtient le nombre d'octets qui ont survécu à la dernière collection et qui sont référencés par le domaine d'application actuel.
Propriété publiqueMembre statiqueMonitoringSurvivedProcessMemorySizeObtient le nombre total d'octets qui ont survécu à la dernière collection pour tous les domaines d'application dans le processus.
Propriété publiqueMonitoringTotalAllocatedMemorySizeObtient la taille totale, en octets, de toutes les allocations de mémoire effectuées par le domaine d'application depuis sa création, sans soustraire la mémoire collectée.
Propriété publiqueMonitoringTotalProcessorTimeObtient le temps processeur total utilisé par tous les threads lors de leur exécution dans le domaine d'application actuel, depuis le démarrage du processus.
Propriété publiquePermissionSetObtient le jeu d'autorisations d'un domaine d'application en mode bac à sable (sandbox).
Propriété publiqueRelativeSearchPathObtient le chemin d'accès sous le répertoire de base où le programme de résolution d'assembly doit détecter les assemblys privés.
Propriété publiqueSetupInformationObtient les informations de configuration du domaine d'application pour cette instance.
Propriété publiqueShadowCopyFilesObtient une indication précisant si le domaine d'application est configuré pour effectuer un cliché instantané des fichiers.
Début
  NomDescription
Méthode publiqueAppendPrivatePath Obsolète. Ajoute le nom de répertoire spécifié à la liste des chemins d'accès privée.
Méthode publiqueApplyPolicyRetourne le nom complet d'assembly après que la stratégie a été appliquée.
Méthode publiqueClearPrivatePath Obsolète. Rétablit la chaîne vide ("") comme valeur du chemin d'accès qui spécifie l'emplacement des assemblys privés.
Méthode publiqueClearShadowCopyPath Obsolète. Rétablit la chaîne vide ("") comme valeur de la liste des répertoires contenant des clichés instantanés d'assemblys.
Méthode publiqueCreateComInstanceFrom(String, String)Crée une nouvelle instance d'un type COM spécifié. Les paramètres spécifient le nom d'un fichier qui contient un assembly contenant le type et le nom du type.
Méthode publiqueCreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)Crée une nouvelle instance d'un type COM spécifié. Les paramètres spécifient le nom d'un fichier qui contient un assembly contenant le type et le nom du type.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkCreateDomain(String)Crée un nouveau domaine d'application portant le nom spécifié.
Méthode publiqueMembre statiquePris en charge par XNA FrameworkCreateDomain(String, Evidence)Crée un nouveau domaine d'application portant le nom spécifié à l'aide de la preuve fournie.
Méthode publiqueMembre statiqueCreateDomain(String, Evidence, AppDomainSetup)Crée un nouveau domaine d'application à l'aide du nom, de la preuve et des informations de configuration du domaine d'application spécifiés.
Méthode publiqueMembre statiqueCreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])Crée un nouveau domaine d'application à l'aide du nom, de la preuve, des informations de configuration du domaine d'application, du jeu d'autorisations par défaut et du tableau d'assemblys ayant un niveau de confiance suffisant.
Méthode publiqueMembre statiqueCreateDomain(String, Evidence, String, String, Boolean)Crée un nouveau domaine d'application portant le nom donné, à l'aide de la preuve, du chemin d'accès de base de l'application, du chemin de recherche relatif et d'un paramètre spécifiant si un cliché instantané d'un assembly doit être chargé dans le domaine d'application.
Méthode publiqueMembre statiqueCreateDomain(String, Evidence, String, String, Boolean, AppDomainInitializer, String[])Crée un nouveau domaine d'application portant le nom donné, à l'aide de la preuve, du chemin d'accès de base de l'application, du chemin de recherche relatif et d'un paramètre spécifiant si un cliché instantané d'un assembly doit être chargé dans le domaine d'application. Spécifie une méthode de rappel qui est appelée lorsque le domaine d'application est initialisé, et un tableau d'arguments de type chaîne à passer à la méthode de rappel.
Méthode publiqueCreateInstance(String, String)Crée une nouvelle instance du type spécifié défini dans l'assembly déterminé.
Méthode publiqueCreateInstance(String, String, Object[])Crée une nouvelle instance du type spécifié défini dans l'assembly déterminé. Un paramètre spécifie un tableau d'attributs d'activation.
Méthode publiqueCreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crée une nouvelle instance du type spécifié défini dans l'assembly déterminé. Les paramètres spécifient un classeur, des indicateurs de liaisons, des arguments de constructeur, les informations spécifiques à la culture utilisées pour interpréter les arguments et des attributs d'activation facultatifs.
Méthode publiqueCreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsolète. Crée une nouvelle instance du type spécifié défini dans l'assembly déterminé. Les paramètres spécifient un binder, des indicateurs de liaisons, des arguments de constructeur, des informations propres à la culture utilisées pour interpréter les arguments, des attributs d'activation et l'autorisation de créer le type.
Méthode publiqueCreateInstanceAndUnwrap(String, String)Crée une nouvelle instance du type spécifié. Les paramètres spécifient l'assembly dans lequel le type est défini et le nom du type.
Méthode publiqueCreateInstanceAndUnwrap(String, String, Object[])Crée une nouvelle instance du type spécifié. Les paramètres spécifient l'assembly dans lequel le type est défini, le nom du type et un tableau d'attributs d'activation.
Méthode publiqueCreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crée une nouvelle instance du type spécifié défini dans l'assembly spécifié, en indiquant si le cas du nom de type est ignoré ; les attributs de liaison et le classeur utilisés pour sélectionner le type à créer ; les arguments du constructeur ; la culture et les attributs d'activation.
Méthode publiqueCreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsolète. Crée une nouvelle instance du type spécifié. Les paramètres spécifient le nom du type et la manière dont il est recherché et créé.
Méthode publiqueCreateInstanceFrom(String, String)Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFrom(String, String, Object[])Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsolète. Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFromAndUnwrap(String, String)Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFromAndUnwrap(String, String, Object[])Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly spécifié, en indiquant si le cas du nom de type est ignoré ; les attributs de liaison et le classeur utilisés pour sélectionner le type à créer ; les arguments du constructeur ; la culture et les attributs d'activation.
Méthode publiqueCreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsolète. Crée une nouvelle instance du type spécifié défini dans le fichier d'assembly déterminé.
Méthode publiqueCreateObjRefCrée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.)
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)Définit un assembly dynamique avec le nom et le mode d'accès spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)Définit un assembly dynamique avec le nom, le mode d'accès et les attributs personnalisés spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès et la preuve spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)Définit un assembly dynamique avec le nom, le mode d'accès et le répertoire de stockage spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)Définit un assembly dynamique avec le nom, le mode d'accès et les attributs personnalisés spécifiés, à l'aide de la source indiquée pour son contexte de sécurité.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage et la preuve spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès et les demandes d'autorisations spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage et l'option de synchronisation spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, la preuve et les demandes d'autorisations spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage et les demandes d'autorisations spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage, la preuve et les demandes d'autorisations spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage, la preuve, les demandes d'autorisations et l'option de synchronisation spécifiés.
Méthode publiqueDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) Obsolète. Définit un assembly dynamique avec le nom, le mode d'accès, le répertoire de stockage, la preuve, les demandes d'autorisations, l'option de synchronisation et les attributs personnalisés spécifiés.
Méthode publiqueDoCallBackExécute le code dans un autre domaine d'application identifié par le délégué spécifié.
Méthode publiquePris en charge par XNA FrameworkEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode publiquePris en charge par XNA FrameworkExecuteAssembly(String)Exécute l'assembly contenu dans le fichier spécifié.
Méthode publiqueExecuteAssembly(String, Evidence) Obsolète. Exécute l'assembly contenu dans le fichier spécifié à l'aide de la preuve spécifiée.
Méthode publiqueExecuteAssembly(String, String[])Exécute l'assembly contenu dans le fichier spécifié à l'aide des arguments spécifiés.
Méthode publiquePris en charge par XNA FrameworkExecuteAssembly(String, Evidence, String[]) Obsolète. Exécute l'assembly contenu dans le fichier spécifié à l'aide de la preuve et des arguments spécifiés.
Méthode publiqueExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm)Exécute l'assembly contenu dans le fichier spécifié à l'aide des arguments, de la valeur et de l'algorithme de hachage spécifiés.
Méthode publiqueExecuteAssembly(String, Evidence, String[], Byte[], AssemblyHashAlgorithm) Obsolète. Exécute l'assembly contenu dans le fichier spécifié à l'aide de la preuve, des arguments, de la valeur et de l'algorithme de hachage spécifiés.
Méthode publiqueExecuteAssemblyByName(String)Charge un assembly en fonction de son nom complet.
Méthode publiqueExecuteAssemblyByName(AssemblyName, String[])Exécute l'assembly à partir d'un AssemblyName, à l'aide des arguments spécifiés.
Méthode publiqueExecuteAssemblyByName(String, Evidence) Obsolète. Exécute un assembly en fonction de son nom complet, à l'aide de la preuve spécifiée.
Méthode publiqueExecuteAssemblyByName(String, String[])Exécute l'assembly en fonction de son nom complet, à l'aide des arguments spécifiés.
Méthode publiqueExecuteAssemblyByName(AssemblyName, Evidence, String[]) Obsolète. Exécute l'assembly, AssemblyName étant donné, à l'aide de la preuve et des arguments spécifiés.
Méthode publiqueExecuteAssemblyByName(String, Evidence, String[]) Obsolète. Exécute l'assembly en fonction de son nom complet, à l'aide de la preuve et des arguments spécifiés.
Méthode publiqueGetAssembliesObtient les assemblys qui ont été chargés dans le contexte d'exécution de ce domaine d'application.
Méthode publiqueMembre statiqueGetCurrentThreadId Obsolète. Obtient l'identificateur du thread en cours.
Méthode publiqueGetDataObtient la valeur stockée dans le domaine d'application actuel pour le nom spécifié.
Méthode publiquePris en charge par XNA FrameworkGetHashCodeSert de fonction de hachage par défaut. (Hérité de Object.)
Méthode publiqueGetLifetimeServiceRécupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode publiquePris en charge par XNA FrameworkGetTypeObtient le type de l'instance actuelle.

In XNA Framework 3.0, ce membre est hérité de Object.GetType().
Méthode publiqueInitializeLifetimeServiceDonne à AppDomain une durée de vie infinie en empêchant toute création de bail. (Substitue MarshalByRefObject.InitializeLifetimeService().)
Méthode publiqueIsCompatibilitySwitchSetObtient une valeur booléenne Nullable qui indique si les commutateurs de compatibilité sont définis, et si tel est le cas, si le commutateur de compatibilité spécifié est défini.
Méthode publiqueIsDefaultAppDomainRetourne une valeur qui indique si le domaine d'application est le domaine d'application par défaut du processus.
Méthode publiqueIsFinalizingForUnloadIndique si le déchargement de ce domaine d'application est en cours et si les objets qu'il contient sont en cours de finalisation par le Common Language Runtime.
Méthode publiqueLoad(AssemblyName)Charge Assembly en fonction de son AssemblyName.
Méthode publiqueLoad(Byte[])Charge Assembly avec l'image au format COFF (Common Object File Format) contenant un Assembly émis.
Méthode publiqueLoad(String)Charge Assembly en fonction de son nom complet.
Méthode publiqueLoad(AssemblyName, Evidence) Obsolète. Charge Assembly en fonction de son AssemblyName.
Méthode publiqueLoad(Byte[], Byte[])Charge Assembly avec l'image au format COFF (Common Object File Format) contenant un Assembly émis. Les octets bruts représentant les symboles de Assembly sont également chargés.
Méthode publiqueLoad(String, Evidence) Obsolète. Charge Assembly en fonction de son nom complet.
Méthode publiqueLoad(Byte[], Byte[], Evidence) Obsolète. Charge Assembly avec l'image au format COFF (Common Object File Format) contenant un Assembly émis. Les octets bruts représentant les symboles de Assembly sont également chargés.
Méthode publiqueReflectionOnlyGetAssembliesRetourne les assemblys qui ont été chargés dans le contexte de réflexion uniquement du domaine d'application.
Méthode publiqueSetAppDomainPolicy Obsolète. Définit le niveau de stratégie de sécurité pour ce domaine d'application.
Méthode publiqueSetCachePath Obsolète. Définit le chemin d'accès du répertoire spécifié comme emplacement pour les clichés instantanés des assemblys.
Méthode publiqueSetData(String, Object)Assigne la valeur spécifiée à la propriété du domaine d'application spécifié.
Méthode publiqueSetData(String, Object, IPermission)Assigne la valeur spécifiée à la propriété du domaine d'application spécifiée, avec l'autorisation spécifiée de demander l'appelant lorsque la propriété est récupérée.
Méthode publiqueSetDynamicBase Obsolète. Définit le chemin de répertoire spécifié comme répertoire de base des sous-répertoires dans lesquels sont stockées les fichiers générés de manière dynamique et à partir desquels ils sont accessibles.
Méthode publiqueSetPrincipalPolicySpécifie la façon dont les objets Principal et Identity doivent être attachés à un thread si celui-ci tente d'établir une liaison vers une entité de sécurité lors de l'exécution dans ce domaine d'application.
Méthode publiqueSetShadowCopyFiles Obsolète. Active les clichés instantanés.
Méthode publiqueSetShadowCopyPath Obsolète. Définit le chemin d'accès du répertoire spécifié comme emplacement pour les clichés instantanés des assemblys.
Méthode publiqueSetThreadPrincipalDéfinit l'objet Principal par défaut à attacher aux threads si ceux-ci tentent d'établir une liaison vers une entité de sécurité lors de l'exécution dans ce domaine d'application.
Méthode publiquePris en charge par XNA FrameworkToStringObtient une représentation sous forme de chaîne qui inclut le nom convivial du domaine d'application et les stratégies de contexte. (Substitue Object.ToString().)
Méthode publiqueMembre statiquePris en charge par XNA FrameworkUnloadDécharge le domaine d'application spécifié.
Début
  NomDescription
Événement publicAssemblyLoadSe produit lorsqu'un assembly est chargé.
Événement publicAssemblyResolveSe produit lorsque la résolution d'un assembly échoue.
Événement publicDomainUnloadSe produit lorsque AppDomain est sur le point d'être déchargé.
Événement publicFirstChanceExceptionSe produit lorsqu'une exception est levée dans le code managé, avant que l'exécution ne recherche un gestionnaire d'exceptions dans la pile des appels du domaine d'application.
Événement publicProcessExitSe produit lorsque le processus parent du domaine d'application par défaut s'arrête.
Événement publicReflectionOnlyAssemblyResolveSe produit lorsque la résolution d'un assembly échoue dans le contexte de réflexion uniquement.
Événement publicResourceResolveSe produit lorsque la résolution d'une ressource échoue parce que la ressource n'est pas une ressource liée ou incorporée valide de l'assembly.
Événement publicTypeResolveSe produit lorsque la résolution d'un type échoue.
Événement publicPris en charge par XNA FrameworkUnhandledExceptionSe produit lorsqu'une exception n'est pas interceptée.
Début
  NomDescription
Implémentation d'interface expliciteMéthode privée_AppDomain.GetIDsOfNamesMappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.
Implémentation d'interface expliciteMéthode privée_AppDomain.GetTypeInfoRécupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface.
Implémentation d'interface expliciteMéthode privée_AppDomain.GetTypeInfoCountRécupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).
Implémentation d'interface expliciteMéthode privée_AppDomain.InvokeFournit l'accès aux propriétés et aux méthodes exposées par un objet.
Début

Les domaines d'application, représentés par des objets AppDomain, permettent de fournir les limites d'isolation, de déchargement et de sécurité pour l'exécution de code managé.

  • Utilisez les domaines d'application pour isoler les tâches qui peuvent interrompre un processus. Si l'état du AppDomain qui exécute une tâche devient instable, le AppDomain peut être déchargé sans affecter le processus. C'est important lorsqu'un processus doit s'exécuter pendant de longues périodes sans redémarrer. Vous pouvez également utiliser les domaines d'application pour isoler les tâches qui ne doivent pas partager de données.

  • Si un assembly est chargé dans le domaine d'application par défaut, il ne peut pas être déchargé de la mémoire tant que le processus s'exécute. Toutefois, si vous ouvrez un deuxième domaine d'application pour charger et exécuter l'assembly, l'assembly est déchargé lorsque ce domaine d'application est déchargé. Utilisez cette technique pour réduire le jeu de travail des longs processus qui utilisent parfois des DLL volumineuses.

Plusieurs domaines d'application peuvent s'exécuter dans un processus unique. Cependant, il n'existe pas de corrélation un à un entre les domaines d'application et les threads. Plusieurs threads peuvent appartenir à un même domaine d'application. Par ailleurs, même si un thread donné n'est pas confiné dans un domaine d'application unique, à un moment donné, il s'exécute dans un domaine d'application unique.

Les domaines d'application sont créés à l'aide de la méthode CreateDomain. Les instances AppDomain sont utilisées pour charger et exécuter des assemblys (Assembly). Si AppDomain n'est plus utilisé, il peut être déchargé.

La classe AppDomain implémente un ensemble d'événements permettant aux applications de répondre lorsqu'un assembly est chargé, un domaine d'application est déchargé ou une exception non gérée est levée.

Pour plus d'informations sur l'utilisation des domaines d'application, consultez Domaines d'application.

Cette classe implémente les interfaces MarshalByRefObject, _AppDomain et IEvidenceFactory.

Ne créez jamais de wrapper accessible à distance pour un objet AppDomain. Vous risqueriez alors de publier une référence distante à AppDomain, en exposant des méthodes telles que CreateInstance pour l'accès à distance et en détruisant ainsi la sécurité d'accès du code pour AppDomain. Des clients malveillants qui se connectent à l'objet AppDomain distant pourraient alors accéder à toutes les ressources auxquelles l'objet AppDomain a lui-même accès. Vous ne devez pas créer de wrappers accessibles à distance pour un type qui étend MarshalByRefObject et qui implémente des méthodes dont des clients malveillants sont susceptibles de se servir pour outrepasser le système de sécurité.

Mise en gardeAttention

La valeur par défaut pour la propriété AppDomainSetup.DisallowCodeDownload est false. Ce paramètre n'est pas sûr pour des services. Pour empêcher les services de télécharger du code d'un niveau de confiance partiel, affectez à cette propriété la valeur true.

TopicLocation
Comment : charger des assemblys dans un domaine d'application.NET Framework : notions de base de la programmation
Comment : configurer un domaine d'application.NET Framework : notions de base de la programmation
Comment : décharger un domaine d'application.NET Framework : notions de base de la programmation
Comment : créer un domaine d'application.NET Framework : notions de base de la programmation
Comment : configurer un domaine d'application.NET Framework : notions de base de la programmation
Comment : charger des assemblys dans un domaine d'application.NET Framework : notions de base de la programmation
Comment : créer un domaine d'application.NET Framework : notions de base de la programmation
Comment : décharger un domaine d'application.NET Framework : notions de base de la programmation

Cet exemple montre comment créer un nouveau AppDomain, instancier un type dans ce nouveau AppDomain, et communique avec l'objet de ce type. De plus, cet exemple montre comment décharger le AppDomain ce qui provoque la récupération de l'objet par le garbage collector.


using System;
using System.Reflection;
using System.Threading;

class Module1
{
    public static void Main()
    {
        // Get and display the friendly name of the default AppDomain.
        string callingDomainName = Thread.GetDomain().FriendlyName;
        Console.WriteLine(callingDomainName);

        // Get and display the full name of the EXE assembly.
        string exeAssembly = Assembly.GetEntryAssembly().FullName;
        Console.WriteLine(exeAssembly);

        // Construct and initialize settings for a second AppDomain.
        AppDomainSetup ads = new AppDomainSetup();
        ads.ApplicationBase = 
            System.Environment.CurrentDirectory;
        ads.DisallowBindingRedirects = false;
        ads.DisallowCodeDownload = true;
        ads.ConfigurationFile = 
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

        // Create the second AppDomain.
        AppDomain ad2 = AppDomain.CreateDomain("AD #2", null, ads);

        // Create an instance of MarshalbyRefType in the second AppDomain. 
        // A proxy to the object is returned.
        MarshalByRefType mbrt = 
            (MarshalByRefType) ad2.CreateInstanceAndUnwrap(
                exeAssembly, 
                typeof(MarshalByRefType).FullName
            );

        // Call a method on the object via the proxy, passing the 
        // default AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName);

        // Unload the second AppDomain. This deletes its object and 
        // invalidates the proxy object.
        AppDomain.Unload(ad2);
        try
        {
            // Call the method again. Note that this time it fails 
            // because the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName);
            Console.WriteLine("Sucessful call.");
        }
        catch(AppDomainUnloadedException)
        {
            Console.WriteLine("Failed call; this is expected.");
        }
    }
}

// Because this class is derived from MarshalByRefObject, a proxy 
// to a MarshalByRefType object can be returned across an AppDomain 
// boundary.
public class MarshalByRefType : MarshalByRefObject
{
    //  Call this method via a proxy.
    public void SomeMethod(string callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", 
            ads.ApplicationName, 
            ads.ApplicationBase, 
            ads.ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name 
        // of the second domain.
        // NOTE: The application's thread has transitioned between 
        // AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.", 
            callingDomainName, 
            Thread.GetDomain().FriendlyName
        );
    }
}

/* This code produces output similar to the following: 

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */


.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tout membre static (Shared en Visual Basic) public de ce type est thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft. Tous droits réservés.