【发布时间】:2018-06-08 13:53:04
【问题描述】:
我正在尝试让我的 c# 应用程序显示我的 CPU 的当前时钟速度。它有点工作,但速度保持不变,即使在任务管理器中时钟速度更高或更低。这是我的代码:
ManagementObjectSearcher ClockSpeedSearch = new
ManagementObjectSearcher("select CurrentClockSpeed from Win32_Processor");
foreach (var item in ClockSpeedSearch.Get())
{
var clockSpeed = (uint)item["CurrentClockSpeed"];
CPUClockSpeed.Invoke((MethodInvoker)(() => CPUClockSpeed.Text = "CPU Clock Speed: " + clockSpeed + "Mhz"));
}
时钟速度保持在 2808Mhz 并且不会改变...有人可以帮我解决这个问题吗?
更新 我发现了我必须做的事情,但现在我得到 System.InvalidOperationException: Category does not exist 错误。看我的截图 here
最好的问候 迪伦
【问题讨论】:
-
您可以使用 PerformanceCounters msdn.microsoft.com/en-us/library/… 获取该信息。如果您打开 Windows Perf Mon,您可以在每个核心的基础上添加
ProcessorPerformance\frequency。 Perf Mon 是性能计数器的 GUI。抱歉,我没有时间将其写成实际答案。 -
好吧,我找到了我必须做的事情,但它现在给了我一个错误提示:“System.InvalidOperationException:类别不存在”
-
WMI 提供程序是由非常诚实的程序员编写的。只要处理器有一些代码要运行并且芯片不会变得太热,处理器就会动态增加其时钟频率。你确实有代码要运行,你的 WMI 查询。标准海森堡。所以他们不会骗你,你会得到 nominal 的速度。它可以上升到 MaxClockSpeed 返回的值,只要您不经常运行该查询,它就可能是当前值 :) 挖掘处理器性能计数器很困难但很无聊,您只会得到您想要的值已经知道。继续下一个项目。
-
我的项目是在 Arduino 上制作硬件监视器。 OpenHardwareMonitor 怎么能看到当前的时钟速度,例如3.6Ghz 3.4Ghz 等等。但是使用性能监视器和我用于 CPU 负载的相同代码我的不能?我输入的所有内容都正确,但仍然无法正常工作