我注意到ManagementObject
is IDisposable
,但它也从ManagementClass.GetInstances()
and返回ManagementObjectSearcher.Get()
,这是否意味着我需要处理遇到的每个对象?
像这样:
ManagementObject ret;
foreach(ManagementObject mo in searcher.Get()) {
if( IsWhatIWant(mo) ) ret = mo;
else mo.Dispose();
}
进一步混淆这一点:存在一个错误ManagementBaseObject
,它没有正确实现IDisposable
(请参阅Using 子句无法调用 Dispose?),因此您需要自己调用它,或者使用正确调用它的包装器。
这很烦人,因为我周围有很多人ManagementObjectCollections
。