【发布时间】:2012-08-28 15:40:11
【问题描述】:
我有一个 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") };
}
}
}
}
在我的日志中,我看到“已构建查询”,然后什么也没有,程序变得无响应。
我尝试过使用和不使用手动超时设置。
【问题讨论】: