Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 如何使用OpenHardwareMonitor获得GPU或CPU的风扇速度?_C#_Winforms_Openhardwaremonitor - Fatal编程技术网

C# 如何使用OpenHardwareMonitor获得GPU或CPU的风扇速度?

C# 如何使用OpenHardwareMonitor获得GPU或CPU的风扇速度?,c#,winforms,openhardwaremonitor,C#,Winforms,Openhardwaremonitor,代码如下: public float? cpuView(bool pause , CpuTemperature cpuTemp , Form1 f1 , List<string> myData , float? myCpuTemp , Button b1, decimal numeric) { try { if (pause == true) { } else {

代码如下:

public float? cpuView(bool pause , CpuTemperature cpuTemp , Form1 f1 , List<string> myData , float? myCpuTemp , Button b1, decimal numeric)
{
    try
    {
        if (pause == true)
        {
        }
        else
        {
            Trace.WriteLine("");
            foreach (var hardwareItem in myComputer.Hardware)
            {
                if (hardwareItem.HardwareType == HardwareType.CPU)
                {
                    hardwareItem.Update();
                    foreach (IHardware subHardware in hardwareItem.SubHardware)
                    subHardware.Update();
                    foreach (var sensor in hardwareItem.Sensors)
                    {
                        cpuTemp.SetValue("sensor", sensor.Value.ToString());
                        if (sensor.SensorType == SensorType.Fan)
                        {
                            MessageBox.Show("test");
                            sensor.Hardware.Update();
                            cpuTemp.GetValue("sensor", sensor.Value.ToString());
                            if (!f1.IsDisposed)//f1.IsHandleCreated && !f1.IsDisposed)
                            {
                                Thread.Sleep(1000);
                                f1.Invoke(new Action(() => myData.Add("Cpu Temeprature --- " + sensor.Value.ToString())));
                            }
                            myCpuTemp = sensor.Value;
                            //if (sensor.Value > 60)
                            //{
                            CpulabelTemp = sensor.Value;
                            cpuSensorValues.Add(sensor.Value);
                            if (cpuSensorValues.Count == 300 && sensor.Value >= (float)numeric)                 
                            {
                                float a = ComputeStats(cpuSensorValues).Item1;
                                float b = ComputeStats(cpuSensorValues).Item2;
                                float c = ComputeStats(cpuSensorValues).Item3;
                                Logger.Write("********************************");
                                Logger.Write("CPU Minimum Temperature Is ===> " + a);
                                Logger.Write("CPU Maximum Temperature Is ===> " + b);
                                Logger.Write("CPU Average Temperature Is ===> " + c);
                                Logger.Write("********************************" + Environment.NewLine);                                           
                                cpuSensorValues = new List<float?>();
                            }
                            b1.Enabled = true;
                            //}
                            break;
                        }
                    }
                }
            }
        }
    }
    catch(Exception err)
    {
        Logger.Write("There was an exception: " + err.ToString());
    }
    return myCpuTemp;
}
取而代之的是温度。 当温度升高时,它工作正常。 但一旦我把它改为风扇,以获得CPU/GPU风扇的速度,它就无法进入,它会跳过这个,如果继续

它永远不会到达消息框。显示行


有什么问题吗?试图用谷歌搜索,但到目前为止什么都没有。

你的问题是有条件的

if (hardwareItem.HardwareType == HardwareType.CPU)

风扇不在CPU上。您需要使用风扇显示的相应硬件类型,可能是
HardwareType.Mainboard

可能您没有这样的传感器,或者属性具有不同的值。如果表达式的计算结果不为true,If将跳过
If
。你可以用一个调试器来解决这个问题。Cody是一个常规的原始OpenHardwareMonitor程序,如果我运行它,它会显示所有的粉丝。所以我有传感器,我只是想我不知道如何正确使用它。
if (hardwareItem.HardwareType == HardwareType.CPU)