Есть ли способ получить тактовую частоту каждого отдельного ядра процессора? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь получить текущую и максимальную скорость каждого ядра в моем процессоре, но, используя код, который я сейчас использую, он дает мне только одно значение для всего процессора.Вот оно:

public string getSpeed()
{
     string res = "";
     ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
     foreach (ManagementObject mj in mos.Get())
     {
         res = String.Concat(res, (Convert.ToString(mj["CurrentClockSpeed"])));
     }
     return res;
}
public string getMaxSpeed()
{
     string res = "";
     ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor");
     foreach (ManagementObject mj in mos.Get())
     {
          res = String.Concat(res, (Convert.ToString(mj["MaxClockSpeed"])));
     }
     return res;
}

, которое дает выходные данные «2500» и «2500» соответственно.

Я использую System.Management и System.Diagnostics, если вам нужно знать.

Можно ли с помощью этих функций Win32 получить текущую и максимальную скорость каждого ядра по отдельности?

Я также использую определенные функции из библиотеки OpenHardwareMonitor.dll в другомфункция, чтобы получить температуру процессора для каждого ядра отдельно, может быть, я могу объединить два и заставить их работать вместе?Вот код, который у меня есть для получения температуры каждого ядра:

    public string getCPUTemp()
    {
        UpdateVisitor updateVisitor = new UpdateVisitor();
        Computer computer = new Computer();
        computer.Open();
        computer.CPUEnabled = true;
        computer.Accept(updateVisitor);
        string res = "";
        for (int i = 0; i < computer.Hardware.Length; i++)

        {
            if (computer.Hardware[i].HardwareType == HardwareType.CPU)

            {
                for (int j = 0; j < computer.Hardware[i].Sensors.Length; j++)

                {
                    if (computer.Hardware[i].Sensors[j].SensorType == SensorType.Temperature) res = String.Concat(res, (computer.Hardware[i].Sensors[j].Name + ": " + computer.Hardware[i].Sensors[j].Value.ToString() + "ºC" + "\r"));
                    if (computer.Hardware[i].Sensors[j].Value.ToString() == "") { res = ""; return res; }
                }

            }
        }



        computer.Close();
        return res;
    }

Должен ли я объединить два, чтобы получить скорость для каждого ядра?Является ли это возможным?Спасибо.

...