【发布时间】:2013-03-29 05:08:21
【问题描述】:
我注意到ManagementObject 是IDisposable,但它也是从ManagementClass.GetInstances() 和ManagementObjectSearcher.Get() 返回的,这是否意味着我需要处理遇到的每个对象?
像这样:
ManagementObject ret;
foreach(ManagementObject mo in searcher.Get()) {
if( IsWhatIWant(mo) ) ret = mo;
else mo.Dispose();
}
更令人困惑的是:ManagementBaseObject 中有一个错误,它没有正确实现IDisposable(请参阅Using clause fails to call Dispose?),因此您需要自己调用它,或者使用正确调用它的包装器。
这很烦人,因为我周围有很多ManagementObjectCollections。
【问题讨论】:
-
foreach到ManagementObjectCollections创建ManagementObjectEnumerator并且也应该被处理掉。呃