Maison >développement back-end >C++ >Comment puis-je décharger explicitement les assemblys chargés avec 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);
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!