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

Comment décharger les assemblys chargés avec Assembly.LoadFrom() en C# ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-28 21:19:21260parcourir

How to Unload Assemblies Loaded with Assembly.LoadFrom() in C#?

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

En C#, les assemblys chargés à l'aide de Assembly.LoadFrom() doivent être explicitement déchargés pour libérer de la mémoire et libérer des ressources détenu par l'assemblage.

Déchargement de l'assemblage

Pour décharger un assemblage, vous pouvez utiliser la méthode AppDomain.Unload. Cette méthode décharge l’AppDomain spécifié, qui à son tour décharge tous les assemblys chargés dans cet AppDomain. Par exemple :

// Create a new AppDomain and load the assembly
AppDomain dom = AppDomain.CreateDomain("some");
AssemblyName assemblyName = new AssemblyName();
assemblyName.CodeBase = pathToAssembly;
Assembly assembly = dom.Load(assemblyName);

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

// Unload the AppDomain
AppDomain.Unload(dom);

Appeler explicitement le garbage collector

L'appel de assem = null seul ne garantit pas que l'assembly sera déchargé immédiatement. Le garbage collector devra toujours s'exécuter pour récupérer les ressources non référencées. Vous ne pouvez pas appeler explicitement le garbage collector en C#.

Cependant, vous pouvez forcer le garbage collector à s'exécuter plus tôt en appelant la méthode GC.Collect. Cette méthode déclenche un cycle de garbage collection et tente de récupérer tous les objets inaccessibles. Bien que GC.Collect puisse être utilisé pour améliorer les performances dans certains scénarios, il n'est généralement pas recommandé de s'y fier fortement, car il peut introduire des pauses dans votre application.

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:
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