3

我正在开发 C# 程序以从一个名为 Cyber​​-Ark 的组件中获取用户,该组件存储加密数据。当我的代码运行到一半时,我得到了这个异常,即使我捕获了所有异常,我仍然得到它。有什么解决方法吗?

Unhandled Exception: System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.
   at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease)
   at PAObjectsLib.PrivateArkClass.Term()
   at CyberArk.API.Objects.PrivateArk.Term()
   at CyberArk.API.Objects.PrivateArk.DoDispose(Boolean disposing)
   at CyberArk.API.Objects.CyberArkBase.Dispose()
   at Program.Main(String[] args)
4

3 回答 3

5

如果底层 COM 对象已被释放(通过调用),您可以获得此异常IUnknown.Release。我已经看到在关闭期间发生这种情况,其中运行时收集了 RCW(运行时可调用包装器)和一些清理代码,然后尝试访问现在不可访问的 COM 对象以在释放它之前调用 COM 对象上的“清理”函数.

Dispose如果这是正确的,您可以在关闭时更早地尝试该对象。

于 2010-12-16T12:41:13.457 回答
0

“我仍然明白”你想要什么?

捕获异常将永远不会发生。

另一方面,可以将 Visual Studio 配置为在出现任何异常时停止,即使您编写代码处理(捕获)它也是如此。进入调试/异常菜单以配置该级别的详细信息。

于 2010-12-16T12:40:17.130 回答
0

可能导致异常的原因不止一个。(尝试像@Martin Liversage 所说的那样正确处理)。

如果它不起作用并且您已经购买了该组件,请联系 Cyber​​-Ark 技术支持。

于 2010-12-16T12:44:11.813 回答