タイトル : Re^3: 配列を使った記述の簡素化 投稿日 : 2016/03/08(Tue) 14:33 投稿者 : 魔界の仮面弁士
> PMSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("SELECT " & i & " FROM Win32_PhysicalMemory") GetObject の COM 版インターフェイスは使わないでください。 (質問2)のコードのように、System.Management 名前空間を用いた記述に書き直すべきです。 もしも COM 版インターフェイスを使うのであれば、各オブジェクトの利用後には Marshal.ReleaseComObject の呼び出しが必要となります。そしてその場合、 For Each を使うべきではありません(オブジェクトの明示的な解放手段が失われるため)。 マネージ版であれば、それぞれに IDisposable が実装されているため、 列挙子も For Each ループ後に自動処分されますが、COM 版の場合は ReleaseComObject を自前で呼ばねばなりません。 以下、ReleaseComObject の使用例。WMI ではなく Excel の場合ですけど。 http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm http://bbs.wankuma.com/index.cgi?mode=red&namber=54149&KLOG=91 |