gpt4 book ai didi

c# - SelectQuery 占用 100% CPU

转载 作者:可可西里 更新时间:2023-11-01 10:51:21 31 4
gpt4 key购买 nike

我正在对机器上的所有用户进行查询,当它执行时,它会占用 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?谢谢。

编辑: 好的,我发现 WMI 进程只占用 25% 的 CPU,但如果我结束程序(查询永远不会完成),它不会被释放。下次我启动一个实例时,进程会上升到 50% CPU,等等,直到它达到 100%。

所以我的新问题是为什么没有释放 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...");
ManagementObjectCollection myCollection = searcher.Get();
foreach (ManagementObject envVar in MyCollection){
Console.WriteLine("Getting " + envVar["Name"].ToString() + "...");
}
}

关于c# - SelectQuery 占用 100% CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110471/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com