Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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# 如何以编程方式检测CPU热节流_C#_Windows_Winforms_Throttling_Openhardwaremonitor - Fatal编程技术网

C# 如何以编程方式检测CPU热节流

C# 如何以编程方式检测CPU热节流,c#,windows,winforms,throttling,openhardwaremonitor,C#,Windows,Winforms,Throttling,Openhardwaremonitor,我正在创建一个小型WinForm应用程序来快速检查CPU冷却是否正常工作。 为了推动CPU,我目前使用下面的代码。 我使用openhardwaremonitorlib.dll在一秒钟的时间间隔内捕获所有内核温度。 这对我来说是可行的,但给CPU通电可能会导致热节流,所以仅仅检查温度是不够的。因此,我想检查一个标志或一些其他指标,但没有找到任何可用的。一种解决方法是记录CPU时钟速度,但我希望有一种更简单的方法 public static void CPUKill(object cpuUsage)

我正在创建一个小型WinForm应用程序来快速检查CPU冷却是否正常工作。 为了推动CPU,我目前使用下面的代码。 我使用openhardwaremonitorlib.dll在一秒钟的时间间隔内捕获所有内核温度。 这对我来说是可行的,但给CPU通电可能会导致热节流,所以仅仅检查温度是不够的。因此,我想检查一个标志或一些其他指标,但没有找到任何可用的。一种解决方法是记录CPU时钟速度,但我希望有一种更简单的方法

public static void CPUKill(object cpuUsage)
        {
            Parallel.For(0, 1, new Action<int>((int i) =>
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                while (StartTime < TestTimeCPU+5)
                {

                    if (ErrorState == false && ExitPressed == false)
                    {
                        if (watch.ElapsedMilliseconds > (int)cpuUsage)
                        {
                            Thread.Sleep(100 - (int)cpuUsage);
                            watch.Reset();
                            watch.Start();
                        }
                    }
                    else
                    {
                        watch.Stop();
                        break;
                    }
                }
            }));
        }







 
公共静态无效CPUKill(对象cpuUsage)
{
平行。对于(0,1,新动作((int i)=>
{
秒表=新秒表();
watch.Start();
同时(开始时间(int)cpuUsage)
{
线程睡眠(100-(int)cpuUsage);
watch.Reset();
watch.Start();
}
}
其他的
{
看,停;
打破
}
}
}));
}