C# 运行时异常

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)

你能展示一下你的主方法吗?但目前看来,似乎你需要从组件提供商那里获取更新以解决这个问题。 - Dirk Vollmar
3个回答

5

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

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


0
你想说的是“我还是得到它”是什么意思?
捕获异常永远不会让它发生。
另一方面,Visual Studio可以配置为在任何异常被抛出时停止,即使您的代码处理(catch)了它。请进入调试/异常菜单以配置该详细级别。

我理解为这个异常正在跳出 try { ... } catch(Exception e) { ... } 块。 - Rup

0

引起异常的原因可能不止一个(尝试按照@Martin Liversage所说正确地处理)。

如果仍然无法解决问题并且您已经购买了该组件,请联系Cyber-Ark技术支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接