У меня есть статический метод, который вызывает объекты управления WMI и сериализует результат.Он работает достаточно хорошо, но он теряет память, как сито.Около 20к каждый раз, когда я запускаю его.(даже с отключенной сериализацией).
Я тестировал в .Net 2.0, 3.0, 3.5, и утечка памяти постоянна.
Я что-то не так делаю?Или есть способ упаковать этот метод так, чтобы то, что когда-либо имело место, было выброшено по окончании.(как бокс это в дочернем процессе)
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
try
{
using(ManagementObjectCollection moList = searcher.Get()){
foreach (ManagementObject mo in moList)
{
try
{
// Do serialization here. Return object will be a List<GenereicObjectType>
}
catch (Exception ex)
{
Debug.Error(ex);
}
finally
{
if (mo != null)
{
try {
mo.Dispose();
}
catch { }
}
}
}
}
}
catch (Exception ex)
{
Debug.Error(ex);
}
}