3

暗号化されたデータを格納する 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)
4

3 に答える 3

5

この例外は、基になる COM オブジェクトが (への呼び出しによってIUnknown.Release) 解放されている場合に発生する可能性があります。ランタイムが RCW (ランタイム呼び出し可能ラッパー) を収集し、いくつかのクリーンアップ コードが、現在アクセス不能になっている COM オブジェクトにアクセスして、COM オブジェクトを解放する前に「クリーンアップ」関数を呼び出そうとするシャットダウン中に、これが発生するのを見てきました。 .

これが正しければDispose、シャットダウンの早い段階でオブジェクトを試すことができます。

于 2010-12-16T12:41:13.457 に答える
0

「I still get it ?」で何がしたいの?

例外をキャッチしても、それは決して起こりません。

一方、コードで例外を処理 (キャッチ) した場合でも、例外が発生したときに停止するように Visual Studio を構成できます。デバッグ/例外メニューに移動して、そのレベルの詳細を構成します。

于 2010-12-16T12:40:17.130 に答える
0

例外の原因となっている可能性のある理由は複数あります。(@Martin Liversageが言ったように正しく処分してみてください)。

動作せず、コンポーネントを購入した場合は、Cyber​​-Ark テクニカル サポートにお問い合わせください。

于 2010-12-16T12:44:11.813 に答える