VisualStudio2005 + Excelアドインの不思議

VisualStudio2005 のC#にてExcelアドインを
開発してるときに分かった不思議な仕様
ウィザードで作成されるThisAddInクラス
のThisAddIn_Startupメソッド内で
COMオブジェクトのExcel.WorkbooksやらExcel.Sheetsを使用して
ReleaseComObject();で破棄しようとすると「System.__ComObject」
ではないということでエラーになります。
デバッガでのぞくと
「System.Runtime.Remoting.Proxies.__TransparentProxy」
という型になっています。
しかしリボンのクリックイベント(ThisAddIn_Startupメソッド以外)
からはReleaseComObject()で正常に破棄できます。
つまり、ExcelのオブジェクトをThisAddIn_Startupで操作した時と
それ以外で操作したときで同じ操作ができるにもかかわらず
インスタンスの型が違うらしいのです。
何か事情があるにせよReleaseComObject()で同じように破棄できるよう
にしてほしかった。
「System.Runtime.Remoting.Proxies.__TransparentProxy」
の破棄方法は分からずじまい。
ただ破棄しないとメモリリークしているのは確認済み。
困った・・・

Author: kachi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です