我注意到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