Mam kwerendę WMI, używając ManagementObjectSearcher.Usługa WMI ManagementObjectSearcher w zapytaniu
Zwykle działa to dobrze, ale na niektórych maszynach wisi/nigdy nie wraca. Próbowałem ustawić limit czasu na kwerendę, ale wydaje się, że nie robi różnicy.
To jest mój kod:
using (var query = new ManagementObjectSearcher("SELECT IDProcess, PercentProcessorTime, WorkingSet FROM Win32_PerfFormattedData_PerfProc_Process"))
{
try
{
query.Options.Timeout = new TimeSpan(0, 0, 10);
query.Options.ReturnImmediately = false;
Log.Info("Query built");
foreach (ManagementObject obj in query.Get())
{
using (obj)
{
var key = (uint)obj.GetPropertyValue("IDProcess");
Log.Info(key);
processStats[key] = new ulong[] { (ulong)obj.GetPropertyValue("PercentProcessorTime"), (ulong)obj.GetPropertyValue("WorkingSet") };
}
}
}
}
W moim dzienniku, widzę „Query zbudowany”, a potem nic, a program przestaje odpowiadać.
Próbowałem już z ręcznym ustawieniem limitu czasu i bez niego.