2010-12-16 163 views
3

我正在使用C#程序從用於存儲加密數據的名爲Cyber​​-Ark的組件中獲取用戶。當我的代碼運行一半的時候,我得到這個異常,即使我捕獲了所有的異常,我仍然得到它。是否有任何解決這個問題的方法?C#運行時異常

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) 
+0

你能展示你的主要方法嗎?但到目前爲止,您似乎應該從組件供應商處獲得更新以解決此問題。 – 2010-12-16 12:41:48

回答

0

你想要什麼「我還能得到它?」

捕捉異常將永遠不會發生。

另一方面,Visual Studio可以配置爲在發生任何異常時停止,即使您編寫了句柄(捕獲)它。進入調試/例外菜單來配置該級別的細節。

+0

我讀過它,因爲這個異常正在逃避try {...} catch(Exception e){...}塊。 – Rup 2010-12-16 12:42:40

5

如果底層COM對象已被釋放(通過調用IUnknown.Release),則可以獲得此異常。我已經看到這發生在運行時收集了RCW(運行時可調用包裝器)的關閉過程中,然後一些清理代碼嘗試訪問現在不可訪問的COM對象,以便在釋放它之前調用COM對象上的「清理」功能。

如果這是正確的,你可以嘗試Dispose早些時候在關機。

0

有多種原因可能導致異常。 (嘗試像@Martin Liversage所說的那樣正確處理)。

如果它不工作,並且您購買了該組件,請聯繫Cyber​​-Ark技術支持。