tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: PowerPointのオブジェクト開放ができません
投稿日: 2009/08/27(Thu) 16:07
投稿者Hongliang
> Dim enumerator As IEnumerator = mySlides.GetEnumerator()
> While enumerator.MoveNext()
>     Dim mySlide As Object = enumerator.Current
>     Dim obj As Object = TryCast(enumerator, ICustomAdapter)
>     Dim obj2 As Object = obj.GetUnderlyingObject
>     MRComObject(mySlide)
>     MRComObject(obj)
>     'MRComObject(obj2)
> End While

enumerator の実体が 1 つ、解放すべき「COM への参照」を持っています。
キャストしても別に enumerator が増えるわけではなくインターフェイスが変わるだけなので、別に COM への参照は増えません。
そもそも実際に COM への参照を持っているのは GetUnderlyingObject で取得したオブジェクトですし。
で、While 文によって何回か中の節が呼び出されるわけです。
このままだと呼び出されただけ enumerator が COM への参照を解放してしまいます。
でも、解放すべき COM への参照は最初に言ったとおり 1 つだけです。

要するに enumerator が持つ COM への参照の解放は
While が終わった後に 1 回行うだけでいいってことです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。