gpt4 book ai didi

.net - 从 .Net 程序中卸载 COM dll

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:56 24 4
gpt4 key购买 nike

我们有一个 .Net 应用程序,从中实例化了一个 C++ COM 组件。我们从子窗体窗口加载 COM 组件。 .Net 应用程序正在编辑一个公共(public)资源,而 COM dll 则使用它来启动。

当执行以下步骤序列时:
1.在新的子窗口中实例化COM组件 COM组件被实例化,被子窗体使用,使用后被置为NULL,希望卸载COM组件。
2. 保持子窗口打开,然后编辑资源
3. 现在,去“刷新”表单,创建一个新的 COM 实例,查看已更改资源的反射 - 但资源未刷新。

我们还使用了 Marshal.ReleaseComObject 方法,但没有成功。请指教。

最佳答案

一旦将 DLL 加载到 .Net AppDomain 中,就不可能强制卸载 DLL。这是 CLR 的一个不幸的限制。如果您确实需要卸载 DLL,您可以执行以下操作。

  1. 创建一个新的 AppDomain
  2. 将DLL加载到新的DLL中
  3. 在新的 AppDomain 中完成工作
  4. 卸载新的 AppDomain

如果一个 DLL 只加载在一个 AppDomain 中,卸载 AppDomain 也会卸载 DLL。所以这将卸载 DLL。然而,这是一个相当重量级的答案。

关于.net - 从 .Net 程序中卸载 COM dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/392786/

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