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