別のアプリケーション(「A」と呼びましょう)のVC#を使用してUIフロントエンド(「B」と呼ばれる)を作成しました。BはスタンドアロンEXEであり、(何らかの理由で)Aから呼び出す必要があります(セキュリティポリシーのため、DLLは使用できません)。
現在の流れは次のとおりです。
- A(COMサーバーとして機能している)を起動します。
- system()呼び出しを使用してAにBを実行させます。
- BはAへのCOM接続を作成します。
- ユーザーがBを閉じます
- Aも閉まっています。<<<これが問題です!
必要なフローは次のとおりです。
...(5)Aは閉じていません。
私の知る限り、望ましくない動作の理由は、COM参照カウンターが自動的に減少するためだと思います。Bは既存のAインスタンスを使用しているため、カウンターは以前は1でしたが、0に減少し、Aが完全にシャットダウンします(ユーザーがその時点でAのデータを失う可能性があるため、これは実際の問題です)。
私はすでにAを存続させるためにGCに影響を与えようとしましたが、成功しませんでした。
質問は:
参照カウンターのデクリメントを回避するなどして、Aのシャットダウンを防ぐにはどうすればよいですか?