我有一个托管的 .NET 2.0 dll,它提供 IDispatch 接口并调用 IDispatch 接口。阅读这个问题这个问题:
何时使用 ReleaseComObject 与 FinalReleaseComObject?
听起来好像我应该等待垃圾收集释放我的 COM 对象引用,而不是尝试自己计算它们。但是,当我这样做时,调用我的 DLL 的非托管代码会引发错误(我没有源代码来调试错误是什么),但这表明这是一个未经授权的虚拟内存访问问题。添加 FinalReleaseCOMObject 可停止此错误。
那我应该使用 FinalReleaseCOMObject 吗?
编辑:忘记提及当托管代码被非托管dll替换时,它不会出现错误。