gpt4 book ai didi

.net - 当C++/CLI DLL卸载时,如何清理.NET内容?

转载 作者:行者123 更新时间:2023-12-04 17:55:14 25 4
gpt4 key购买 nike

我是C++/CLI的新手,所以请多多包涵...

我正在研究混合的C++/CLI DLL,它应该充当Win32进程和.NET程序集之间的桥梁。在DLL中,我需要在DLL的使用生命周期期间提供一些.NET内容。初始化不是一个大问题,但是我不知道何时可以安全地清理.NET内容。在CLR消失之后,似乎都调用了通常的C++工具(DLL_PROCESS_DETACH,全局变量和静态局部变量)。

因此,以什么方式通知DLL即将与CLR分离,以便可以释放所持有的.NET引用?

最佳答案

如果您需要处理AppDomain的卸载,请使用AppDomain.DomainUnload事件进行清理。

正如STW所说,带有托管代码的库永远无法与AppDomain分离,将其与流程分离的唯一方法是卸载AppDomain。

如果您不管理AppDomain,则只需泄漏托管资源(并在流程分离期间正确刷新非托管资源)。更好的是,将其设计为仅崩溃的软件,因此无需清理。

关于.net - 当C++/CLI DLL卸载时,如何清理.NET内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com