タイトル : Re^2: レイトバインドするとExcelのFindNextオブジェクトが開放できなくなります 投稿日 : 2010/07/14(Wed) 11:21 投稿者 : camputer
魔界の仮面弁士 博士(`ー´)ゞ どうもありがとうございます!!m(_ _)m > アーリーバインドの場合は、変数 myRng の型が Range でしたが、 > レイトバインドの場合は Object 型ですよね。 > このため、FindNext の処理では内部的に型チェックと Object → Range への > 型変換が発生し、恐らくこの段階で参照カウントが増加してしまうのでしょう。 なんとその様な現象が起こるのでございますか。。。全然存じませんでした。 参考リンクをどうもありがとうございます。リンク先で > むしろ、型変換にともなって参照カウントが増加するなどの理由から、 > レイトバインドの方が、解放が難しくなる事さえありえます。 と書いてくださっていますね^^(早くこういう記事を自分で探してこれるようにならな略orz) > myRng を ReleaseComObject する際に、その戻り値を確認してみてください。 > 正しく解放されていれば 0 が返されるはずですが、0 以外になっているようなら、 > この部分は ReleaseComObject ではなく FinalReleaseComObject で解放した方が安全です。 はい!今からやり方から調べて戻り値を調査してまいります。 > ちなみにこのようなケースでは、.NET 1.x 当時は、ReleaseComObject を 0 になるまで > 繰り返すパターンで解放していたのですが、2.0 以降では、FinalReleaseComObject を > 使う事が推奨されています。 どうもありがとうございます。こういう、長い間VBを触っていないと 得にくいお話は理解が深まりますしタメになります。 > この場合は、開放ではなく解放 orz いつもご指摘どうもありがとうございます。タイトル以外修正いたしました。 (言い訳がましいでございますが、今タイプしておりますPCがIMEの学習機能設定を ほぼ0にされておりまして、何度打っても「解放」を第一候補にしてくれません。。。 注意いたします^^;) 再度お礼&ご報告させていただきます!どうもありがとうございました!! |