0

私のC#WinFormsアプリには、古いVB 6.0またはおそらくVC 6.0 ActiveXコントロールをテキストエディターとして使用している子アプリがあります(使用している場合はTXTextControlの古いActiveXバージョン)。VS IDE で、この ActiveX コントロールを持つこの子アプリを閉じてからメイン アプリを閉じると、次のエラーが発生します。

ここに画像の説明を入力

これを掘り下げて何が起こっているのかを見つけるために提案するテクニックやアイデアは何ですか? VS IDE の外部でアプリを実行すると、これは発生しません。

4

1 に答える 1

1

COM オブジェクトを RCW から分離する方法にはいくつかの可能性がありますが、これが VS デバッガーでのみ発生する理由はわかりません。

  1. ActiveX\RCW クラスへの参照を保持する必要があります。(また、参照を静的変数として保持すると問題が発生することもあるため、静的変数に保持しないことをお勧めします)。例:が参照TXTextControl txControl = new TXTextControlClass();txContol保持し、アプリケーションの期間中スコープ内であることを確認します。
  2. アプリケーションを閉じる前、または AX コントロールをホストしているフォームを破棄する前に、手動のクリーンアップ コードを追加し、場合によっては RCW 参照を保持するクラスに IDisposable を実装することをお勧めします。
  3. イベント ハンドラーを AX コントロールにアタッチした場合は、RCW 参照とアプリケーションを閉じる前にそれらが終了していることを確認してください。ハンドラーを手動でデタッチすることもできます。
于 2012-11-07T20:36:23.690 に答える