首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectQuery消耗了100%的CPU

问SelectQuery消耗了100%的CPU
EN

Stack Overflow用户
提问于 2010-01-21 15:37:49
回答 1查看 602关注 0票数 2

我正在为机器上的所有用户做一个查询,当它执行时,它会占用100%的CPU并锁定系统。我已经等了5分钟了,什么也没发生。

在任务管理器中,wmiprvse.exe正在使用所有的CPU。当我杀死那个过程,一切都恢复正常。

这是我的代码:

代码语言:javascript
复制
        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不被释放,这样的查询需要多长时间才能完成?

EN

回答 1

Stack Overflow用户

发布于 2010-01-21 15:56:52

尝尝这个

代码语言:javascript
复制
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() + "..."); 
  } 
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2110471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档