C# 如何以编程方式检测CPU热节流
我正在创建一个小型WinForm应用程序来快速检查CPU冷却是否正常工作。 为了推动CPU,我目前使用下面的代码。 我使用openhardwaremonitorlib.dll在一秒钟的时间间隔内捕获所有内核温度。 这对我来说是可行的,但给CPU通电可能会导致热节流,所以仅仅检查温度是不够的。因此,我想检查一个标志或一些其他指标,但没有找到任何可用的。一种解决方法是记录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)
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();
}
}
其他的
{
看,停;
打破
}
}
}));
}