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# 当前时钟速度显示的主要内容,如果未能解决你的问题,请参考以下文章