私は次の機能を実現しようとしていますが、本当に近づいているように感じますが、まだ十分ではありません. この質問を投稿して、誰かがすでに同様のことを行っている可能性があるかどうか、これをどのように達成するのが最善かについての洞察を持っているかどうかを確認します.
あるアプリケーション (MainApp と呼びます) で、別のアプリケーション (ツールと呼びます) からアクセスする必要がある COM オブジェクトを作成しています。これを実現するには、MainApp 内のオブジェクトを ROT に登録する必要があります。この質問の範囲外の理由で、サービスとして実行されるカスタム IRunningObjectTable 実装を使用しています。また、COM オブジェクトは作成時に ROT に登録し、不要になったら登録解除する必要があります。これは、ROT が COM オブジェクトへの弱い参照のみを保持する必要があり、それらの有効期間を延長してはならないことを意味します。
また、COM オブジェクトがまだ生きている間に ROT がシャットダウンされる場合もあります。これにより、MainApp でリークやクラッシュが発生してはなりません。
ツールは ROT に問い合わせて、登録されたオブジェクトへのインターフェイスを取得します。オブジェクトから情報を抽出し、その間は生きたままにしますが、処理が完了するとすぐに解放します。
私が直面している主な問題は、弱いテーブル登録の実装と、作成者によって登録または取り消されるのではなく、COM オブジェクトを登録および取り消すことに関連しています。
ヒントをありがとう。