我注意到ManagementObject
是IDisposable
,但它也从ManagementClass.GetInstances()
和ManagementObjectSearcher.Get()
返回,这是否意味着我需要处理遇到的每个对象?是否有必要处理每个ManagementObject?
像这样:
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'并且应该被处置。 ugh – xmedeko