我有一个 WMI 查询,使用 ManagementObjectSearcher。
通常,这可以正常工作,但在某些机器上,它会挂起/永远不会返回。我尝试在查询上设置超时,但似乎没有什么区别。
这是我的代码:
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") };
}
}
}
}
在我的日志中,我看到“查询已构建”,然后什么也没有,程序变得无响应。
我尝试过使用和不使用手动超时设置。