Maison > développement back-end > C++ > Comment puis-je décharger explicitement les assemblys chargés avec Assembly.LoadFrom() ?

Comment puis-je décharger explicitement les assemblys chargés avec Assembly.LoadFrom() ?

Mary-Kate Olsen
Libérer: 2025-01-04 09:41:35
original
399 Les gens l'ont consulté

How Can I Explicitly Unload Assemblies Loaded with Assembly.LoadFrom()?

Déchargement des assemblys chargés avec Assembly.LoadFrom()

Afin de vérifier le temps nécessaire à l'exécution de GetTypes() après le chargement d'une DLL avec Assembly.LoadFrom(), il faudra peut-être décharger et recharger la DLL. Cependant, définir la référence Assembly sur null n'est pas suffisant pour décharger l'assembly.

Déchargement explicite des assemblys

Pour décharger explicitement un assembly, vous pouvez utiliser AppDomain.Unload () méthode. Voici un exemple :

// Create a separate AppDomain to load the assembly
AppDomain dom = AppDomain.CreateDomain("some");

// Load the assembly into the new AppDomain
Assembly assembly = dom.LoadFrom(filePath);

// Get the types from the assembly
Type[] types = assembly.GetTypes();

// Unload the AppDomain, which will unload the assembly
AppDomain.Unload(dom);
Copier après la connexion

En déchargeant l'AppDomain, l'assembly et toutes ses ressources seront récupérés par le garbage collector.

Utilisation du Garbage Collector

Bien que définir la référence Assembly sur null ne décharge pas explicitement l'assembly, cela le rend éligible pour le garbage collection. Le garbage collector finira par récupérer les ressources allouées à l'objet Assembly et les fichiers assembly seront déchargés de la mémoire.

Cependant, il n'existe aucun moyen d'appeler explicitement le garbage collector ou de le forcer à s'exécuter immédiatement. Il s'agit d'un processus en arrière-plan qui s'exécute lorsque le système est inactif. Par conséquent, il est recommandé d'utiliser AppDomain.Unload() si vous souhaitez décharger explicitement un assembly.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal