我是C++/CLI的新手,所以请耐心等待......
我正在研究一个混合的C++/CLI DLL,它应该充当Win32进程和.NET程序集之间的桥梁.在DLL中,我需要在DLL的生命周期中存在一些.NET内容.初始化不是一个大问题,但我无法弄清楚何时可以安全地清理.NET内容.在CLR消失之后,似乎都会调用通常的C++工具(DLL_PROCESS_DETACH,全局变量和静态局部变量).
那么,获取通知DLL即将从CLR分离的方式是什么,所以我可以发布我持有的.NET引用?
好吧,回答我自己的问题似乎很尴尬,但这不是其他人建议的,这就是我一直在寻找的......所以:
事实证明,Microsoft 提供了 onexit 的一种奇特变体,称为_onexit_m,它应该在混合模式 DLL 中使用。当使用_onexit_m注册(托管)回调函数时,将在 DLL 即将卸载时、CLR 关闭之前调用该函数。它类似于Ben Voigt 建议的AppDomain.DomainUnload ,但由于某种原因我无法让 DomainUnload 工作,并且 _onexit_m 使用恕我直言更简单。
| 归档时间: |
|
| 查看次数: |
2683 次 |
| 最近记录: |