C# Runtime Exception
Я работаю над программой на 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)
3 ответа
Вы можете получить это исключение, если базовый COM-объект был освобожден (путем вызова IUnknown.Release
). Я видел, как это происходило во время выключения, когда среда выполнения собирала RCW (вызываемую оболочку во время выполнения), и некоторый код очистки затем пытается получить доступ к теперь недоступному объекту COM, чтобы вызвать функцию очистки в объекте COM перед его освобождением.,
Если это правильно, вы можете попробовать Dispose
объект ранее при отключении.
Существует несколько причин, которые могут быть причиной исключения. (попробуйте правильно утилизировать, как сказал @Martin Liversage).
Если он не работает и вы приобрели компонент, обратитесь в службу технической поддержки Cyber-Ark.
Что вы хотите от "Я до сих пор понимаю?"
Поймать исключение никогда не случится.
С другой стороны, Visual Studio можно настроить так, чтобы он останавливался при возникновении любого исключения, даже если вы его обрабатываете (перехватываете). Зайдите в меню отладки / исключения, чтобы настроить этот уровень детализации.