2011-06-27 11 views
1

Visual Studio 6 ATLにCOMコンポーネントが記述されています。これはプロセス外のEXEです。 C#.NETから、このコンポーネントをインスタンス化して呼び出すことができますが、それを呼び出す関数の後に、コンポーネントのexeがタスクマネージャにロードされたままになります。COM Interopコンポーネントがメモリに残る

これは.NETでは正常ですか?私は、Visual C++ 6で書かれたテストアプリケーションから呼び出すと、自身をアンロードします。

.NETで私が行ったのは、[参照の追加]で、リストにCOMコンポーネントを選択したことだけでした。そして、newを呼び出すことによってそれのインスタンスを作成しました。

+3

あなたはCOMオブジェクト(複数可リリースしています)?あなたのCOMオブジェクトを扱うコードを表示することが役に立ちます。 –

答えて

1

あなたが見ている問題は、この質問からと同じです: How do I properly clean up Excel interop objects?

これは、カバーの下に何が起こっているかの良い説明です: http://blogs.msdn.com/b/cbrumme/archive/2003/04/16/51355.aspx

+0

ありがとうございます。私はそれを与えるだろう。私はそれらの中にリリースメソッドを持たない多くのCOM Interopの例を見ていましたので、C#であなたはC#で新しい方法で作成されたオブジェクトの削除を呼び出さない同じ方法ではないと仮定しました。私の間違い。 – Jonnster

+0

COMを非同期呼び出しして接続ポイントを使用すると、これはどのように動作しますか?それはまだC++と同じですか? – Jonnster

+0

MSDNの記事では、それは心配するものではないという印象を与えています。実際には、Releaseを呼び出さない方が良いです。もしそうなら、私はそれを残すか、私は誤解しましたか? – Jonnster

関連する問題