我正在为机器上的所有用户做一个查询,当它执行时,它会占用100%的CPU并锁定系统。我已经等了5分钟了,什么也没发生。
在任务管理器中,wmiprvse.exe正在使用所有的CPU。当我杀死那个过程,一切都恢复正常。
这是我的代码:
SelectQuery query = new SelectQuery("Win32_UserAccount",
"LocalAccount=1 and Domain='" + GetMachine().DomainName + "'");
using(ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) {
IList<WindowsUser> users = new List<WindowsUser>();
Console.WriteLine("Getting users...");
foreach (ManagementObject envVar in searcher.Get()) {
Console.WriteLine("Getting " + envVar["Name"].ToString() + "...");
}
}在控制台里我看到的只是让用户..。没别的事了。问题似乎在于searcher.Get()。
有人知道为什么这个查询占用100%的CPU吗?谢谢。
编辑:,OK,我发现WMI进程只消耗了25%的CPU,但是如果我结束程序它就不会被释放(查询永远不会完成)。下一次当我启动一个实例时,进程会上升到50% CPU等,直到它达到100%。
因此,我的新问题是,为什么CPU不被释放,这样的查询需要多长时间才能完成?
发布于 2010-01-21 15:56:52
尝尝这个
SelectQuery query = new SelectQuery("Win32_UserAccount", "LocalAccount=1 and Domain='" + GetMachine().DomainName + "'");
using(ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) {
IList<WindowsUser> users = new List<WindowsUser>();
Console.WriteLine("Getting users...");
ManagementObjectCollection myCollection = searcher.Get();
foreach (ManagementObject envVar in MyCollection){
Console.WriteLine("Getting " + envVar["Name"].ToString() + "...");
}
} https://stackoverflow.com/questions/2110471
复制相似问题