【问题标题】:C# Runtime ExceptionC# 运行时异常
【发布时间】:2010-12-16 12:35:21
【问题描述】:

我正在开发 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)

【问题讨论】:

  • 你能展示你的主要方法吗?但到目前为止,您似乎应该从组件供应商处获取更新以解决此问题。

标签: c# cyber-ark


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    捕获异常永远不会发生。

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

    【讨论】:

    • 我读它是因为这个异常正在转义 try { ... } catch(Exception e) { ... } 块。
    【解决方案3】:

    可能导致异常的原因不止一个。 (尝试按照@Martin Liversage 的说法正确处理)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2014-02-26
      • 2013-04-06
      相关资源
      最近更新 更多