DOBON.NETプログラミング道掲示板

■35255 / 6階層)  Excel Com オブジェクトの増殖
□投稿者/ 魔界の仮面弁士 大御所(1494回)-(2022/11/28(Mon) 06:16:23)
  • アイコンNo35251に返信(たこさんの記事)
    > 問題は無い様に思えるのですが…
    Friend Sub WorkSheet_Select には、もう一つ問題点がありそうです。

    > If Not check Then
    >   _xlsWorkSheet = CType(xlsSheets.Add(), Excel.Worksheet)
    >   xlsWorkSheet.Name = strSheetName
    > Else
    >   _xlsWorkSheet = CType(xlsSheets(strSheetName), Excel.Worksheet)
    > End If
    これだと、「以前に _xlsWorkSheet が参照していた COM オブジェクト」が
    解放されなくなってしまいます。


    No35247 において、解説の最後に
    >> Dim y As Excel.Workbooks = x.Workbooks
    >> Dim z As Excel.Workbooks = x.Workbooks
    という実験コードを書いていますが、この場合、VBA や VBS とは異なり、
    .NET においては y と z が別インスタンスとなることに注意が必要です。

    この場合、COM の参照カウントは y と z それぞれに対して減じねばなりません。
    y と z の両方を RelaseComObject した場合と、どちらか一方しか
    解放しなかった場合とで、Excel の残存性を確認してみてください。

    仮に同一インスタンスを返す仕様であったとしたら、
     Trace.WriteLine(Marshal.ReleaseComObject(z)) 'ア
     Trace.WriteLine(Marshal.ReleaseComObject(y)) 'イ
    において、ReleaseComObject の戻り値から得られる残存参照カウント数が
    「イ = ア - 1」の関係となるはずですが、実際には別インスタンスであるため
    「イ = ア」な戻り値で返されていると思います。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[5]: Excel Com オブジェクトの増殖 /たこ 返信無し
 
上記関連ツリー

Nomalアイコン Excel Com オブジェクトの増殖 / たこ (22/11/27(Sun) 04:14) #35241
Nomalアイコン Re[1]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 08:37) #35244
  └Nomalアイコン Re[2]: Excel Com オブジェクトの増殖 / たこ (22/11/27(Sun) 10:59) #35245
    ├Nomalアイコン Re[3]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 11:36) #35247
    │└Nomalアイコン Re[4]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 11:43) #35248
    └Nomalアイコン Re[3]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 12:56) #35249
      └Nomalアイコン Re[4]: Excel Com オブジェクトの増殖 / たこ (22/11/27(Sun) 16:46) #35250
        ├Nomalアイコン Re[5]: Excel Com オブジェクトの増殖 / たこ (22/11/27(Sun) 19:11) #35251
        │├Nomalアイコン Re[6]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 22:56) #35253
        │└Nomalアイコン Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/28(Mon) 06:16) #35255 ←Now
        └Nomalアイコン Re[5]: Excel Com オブジェクトの増殖 / 魔界の仮面弁士 (22/11/27(Sun) 22:32) #35252
          └Nomalアイコン Re[6]: Excel Com オブジェクトの増殖 / radian (22/11/28(Mon) 11:57) #35256
            └Nomalアイコン Re[7]: Excel Com オブジェクトの増殖 / たこ (22/11/28(Mon) 22:38) #35257
              └Nomalアイコン Re[8]: Excel Com オブジェクトの増殖 / たこ (22/11/28(Mon) 23:06) #35258

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -