まずはシナリオの説明から。相互運用性を確保するために、いくつかの C# プロジェクトといくつかのラッパー プロジェクト (マネージ C++) を含む Visual C++ アプリケーションがあります。
C# 側の例外について、Visual C++ 側で通知する必要があります。これは、ラッパー プロジェクトで例外をキャッチし、それらを C++ 例外として再スローすることで実現できることがわかっています。このオプションを試してみたところ、うまくいきました。C++ で非同期例外 (c# 例外) を直接キャッチするなどの他のオプションも検討しましたが、キャッチされた例外に関する情報が不足しているため、この最後のオプションは破棄します。
ラッパー プロジェクトは既に作成されており、try/catch ステートメントを全体に挿入することを意味しないソリューションについて考えさせるのに十分な大きさです。Visual C++ グローバル ハンドラーと同じように機能する C# 例外用のグローバル例外ハンドラーを設定したいと考えています。AppDomain.UnhandledException イベントを調査しますが、いくつかの相互運用性の問題のために適切ではありません。いずれにせよ、実行フローが中断されるため、そのオプションを破棄します。
私たちが望んでいるのは (おそらく不可能ですが)、Visual C++ への変換と例外のスローを可能にする C# グローバル例外ハンドラーを設定することです。
何か案は?
前もって感謝します。