【发布时间】:2020-01-20 19:47:52
【问题描述】:
我有一个必须安装在 COM+ 中的应用程序。通过 RegSvcs 安装工作正常,但是当我尝试卸载应用程序时,一些 DLL 被锁定并保留在安装文件夹中。请注意,这只发生在我调用 COM+ 应用程序之后;否则卸载运行顺利。
我的应用程序需要全新安装和退出,但我很难确定这些 DLL 被锁定的原因。下面是锁定的第三方 DLL 的屏幕截图;与我的应用程序对应的两个没有显示。
我的程序集被标记为非 ComVisible,派生自 ServicedComponent 的单个类暴露给 COM+。我尝试在调用完成后强制进行垃圾收集,但这似乎没有任何区别。所以,一些问题:
- 是否可以安全地假设这是由于 IDisposable 在某处的不正确实施而发生的,或者可能是其他原因?
- 我应该假设每个锁定的 DLL 都存在一个单独的问题,还是单个类的问题导致所有这些 DLL 都被锁定?
- 有什么建议可以调试这个吗?
任何帮助将不胜感激 - 感觉完全失去了这个。
【问题讨论】:
-
您可以尝试使用
handle实用程序来检查实际上是什么阻止了您的文件。然后继续对根本案例进行进一步调查。您确定您的应用程序已正确关闭吗?
标签: c# .net com-interop com+ component-services