首页 > 后端开发 > C++ > 如何显式卸载使用 Assembly.LoadFrom() 加载的程序集?

如何显式卸载使用 Assembly.LoadFrom() 加载的程序集?

Mary-Kate Olsen
发布: 2025-01-04 09:41:35
原创
386 人浏览过

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

卸载使用 Assembly.LoadFrom() 加载的程序集

为了检查加载 DLL 后运行 GetTypes() 所需的时间使用Assembly.LoadFrom(),可能需要卸载并重新加载DLL。但是,将程序集引用设置为 null 不足以卸载程序集。

显式卸载程序集

要显式卸载程序集,可以使用 AppDomain.Unload () 方法。下面是一个示例:

// 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);
登录后复制

通过卸载 AppDomain,程序集及其所有资源将被垃圾收集器回收。

使用垃圾收集器

虽然将程序集引用设置为 null 不会显式卸载程序集,但它会使其成为垃圾 收藏。垃圾收集器最终会回收分配给 Assembly 对象的资源,并且程序集文件将从内存中卸载。

但是,无法显式调用垃圾收集器或强制其立即运行。它是一个后台进程,在系统空闲时间时运行。因此,如果您想显式卸载程序集,建议使用 AppDomain.Unload()。

以上是如何显式卸载使用 Assembly.LoadFrom() 加载的程序集?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板