Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ManagementObjectSearcher(“选择名称,来自Win32处理器的NumberOfCores”)。Get()速度非常慢_C#_Wmi - Fatal编程技术网

C# ManagementObjectSearcher(“选择名称,来自Win32处理器的NumberOfCores”)。Get()速度非常慢

C# ManagementObjectSearcher(“选择名称,来自Win32处理器的NumberOfCores”)。Get()速度非常慢,c#,wmi,C#,Wmi,我有一个获取cpu数据的程序。由于某些原因,它非常慢,需要30秒才能完成 public static KeyValuePair<string, int> CPUData() { int coreCount = 0; string cpuName = string.Empty; foreach (var item in new ManagementObjectSearcher("Select Name,NumberOfC

我有一个获取cpu数据的程序。由于某些原因,它非常慢,需要30秒才能完成

public static KeyValuePair<string, int> CPUData()
    {
        int coreCount = 0;
        string cpuName = string.Empty;
        foreach (var item in new ManagementObjectSearcher("Select Name,NumberOfCores from Win32_Processor").Get())
        {
            coreCount += int.Parse(item["NumberOfCores"].ToString());
            cpuName = item["Name"].ToString();
        }
        return new KeyValuePair<string, int>(cpuName, coreCount);
    }

}

主要问题是
新建ManagementObjectSearcher(“从Win32_处理器中选择名称、NumberOfCores”)
,您每次都在构造一个新实例,执行一次,然后在循环中的mos对象实例上调用
Get()
。@zaggler谢谢,但这并没有解决它。在我第一次创建它时,它仍然很慢。它更好,但仍然非常慢,在我第一次运行它时,大约需要20-30秒才能完成。我无法复制这个问题,我的运行和返回只需不到一秒。您如何调用此例程?@zaggler如果用户输入sysinfo,我将调用该函数。除此之外,我调试了我的代码,发现我的代码被卡在了函数上,而不是“foreach”(新ManagementObjectSearcher中的var项(“选择名称,来自Win32_处理器的NumberOfCores”).get()(这一行在被卡的函数中)这一行。请更新您的帖子,以包含与调用此函数相关的所有代码。
public static void RunCommand(string response)
{
if (response.StartsWith("CMD"))
{
    Console.WriteLine(CommandHandler.ExecuteCommandAsAdmin(response.Substring(4)));
}
else if (response.StartsWith("sysInfo"))
{
    var data = CPUData();
    Console.WriteLine(data.Key + " " + data.Value);
}
else if (response.StartsWith("sysStatus"))
{
    
}