C# 当前时钟速度显示

Posted

技术标签:

【中文标题】C# 当前时钟速度显示【英文标题】:C# Current Clock Speed Display 【发布时间】: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

最好的问候 迪伦

【问题讨论】:

***.com/a/22646098/2701753 或许 您可以使用 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 负载的相同代码我的不能?我输入的所有内容都正确,但仍然无法正常工作 【参考方案1】:

我的猜测是这些信息不会经常更新(如果在 Bios 之后更新的话)。

此页面:https://msdn.microsoft.com/en-us/library/aa394373%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396(搜索 CurrentClockSpeed)表明该信息来自System Management BIOS

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

此值来自 SMBIOS 信息中处理器信息结构的 Current Speed 成员。

【讨论】:

【参考方案2】:

此信息来自处理器驱动程序,此值不固定。如果你给你的系统带来了沉重的负担,那就重新来过吧。与系统空闲相比,您将获得不同的值。希望这些信息对您有用。

【讨论】:

以上是关于C# 当前时钟速度显示的主要内容,如果未能解决你的问题,请参考以下文章

AEJoy —— 表达式之模拟计时时钟JS

SPI器件中的最大速度是啥概念?

在 Android 设备上以编程方式获取 CPU 时钟速度?

STM32的运行速度到底是多少

当系统时钟为100mhz时,gpio翻转速度最大可以到多少

计算机速度GHz等于每秒多少次