C#当前时钟速度显示

C#当前时钟速度显示,c#,cpu,C#,Cpu,我正试图让我的c#应用程序显示我CPU的当前时钟速度。它可以工作,但速度保持不变,即使在任务管理器中,时钟速度较高或较低。这是我的密码: ManagementObjectSearcher ClockSpeedSearch = new ManagementObjectSearcher("select CurrentClockSpeed from Win32_Processor"); foreach (var item in ClockSpeedSearch.Get()) { var cl

我正试图让我的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,不会改变。。。有人能帮我吗

更新 我知道我必须做什么,但现在我得到了系统。InvalidOperationException:类别不存在错误。看到我的截图了吗

致意
Dylan

我的猜测是,这些信息不会经常更新(如果在BIOS发布之后)

此页面:(搜索CurrentClockSpeed)表明信息来自

处理器的当前速度,以MHz为单位

此值来自SMBIOS信息中处理器信息结构的当前速度成员


此信息来自处理器驱动程序,此值不是固定值。如果你在你的系统上加了很多负载,那么就再加一次。与系统空闲相比,您将获得不同的值。希望这些信息对您有用。

也许您可以使用PerformanceCounters获取这些信息。如果打开Windows Perf Mon,则可以按每个核心添加
处理器性能\频率
。Perf Mon是性能计数器的GUI。我没有时间把它写下来作为一个实际的答案抱歉。我找到了我必须做的事情,但现在它给了我一个错误:“System.InvalidOperationException:Category Not Existence”WMI提供程序是由非常诚实的程序员编写的。处理器动态增加时钟频率,只要它有一些代码要运行,并且芯片不会变得太热。您确实有代码运行WMI查询。标准海森堡。所以他们不会骗你,你会得到名义速度。它可以上升到MaxClockSpeed返回的值,可能是当前值,只要您不太频繁地运行该查询:)挖掘处理器性能计数器很难,但很无聊,您只会得到已知的值。继续下一个项目。我的项目是在Arduino上制作一个硬件监视器。为什么OpenHardwareMonitor可以看到当前的时钟速度,例如3.6Ghz、3.4Ghz等,但使用性能监视器和我用于CPU负载的相同代码,我却看不到??我把所有的东西都打对了,但还是不行