C# 如何确定当前的Windows计时器分辨率?
这可能很明显,但我找不到/google获得计时器分辨率当前系统值的正确方法,程序可以通过timeBeginPeriod(n)/timeEndPeriod(n)设置计时器分辨率。我想知道目前的解决方案是什么。。。Windows7的默认值似乎是15.6ms,但其他应用程序或机器供应商可能已更改该设置 有些工具会报告值,但我需要在应用程序中读取值 感谢您提供的任何快速提示或链接。C#将是一个加号,但我知道我的方法 编辑: 多亏了这个答案,我用C#制作了一个小工具,它使用了所描述的方法:C# 如何确定当前的Windows计时器分辨率?,c#,windows,winapi,timing,C#,Windows,Winapi,Timing,这可能很明显,但我找不到/google获得计时器分辨率当前系统值的正确方法,程序可以通过timeBeginPeriod(n)/timeEndPeriod(n)设置计时器分辨率。我想知道目前的解决方案是什么。。。Windows7的默认值似乎是15.6ms,但其他应用程序或机器供应商可能已更改该设置 有些工具会报告值,但我需要在应用程序中读取值 感谢您提供的任何快速提示或链接。C#将是一个加号,但我知道我的方法 编辑: 多亏了这个答案,我用C#制作了一个小工具,它使用了所描述的方法: Window
Windows计时器分辨率由隐藏的API调用提供:
NTSTATUS NtQueryTimerResolution(OUT PULONGMinimumResolution,
OUT LONGMaximumResolution,
OUT PULONGActualResolution);
NtQueryTimeResolution由本机Windows NT库NTDLL.DLL导出
通用硬件平台报告156250或100144用于实际解决方案;较旧的平台可能报告更大的数字;较新的系统,特别是支持HPET(高精度事件计时器)或恒定/不变TSC时,可能会返回156001进行实际解析
对timeBeginPeriod(n)
的调用将反映在实际解决方案中
答案中有更多细节。是的,我看到了这个帖子,但实际问题没有答案……这可能是真的,但将问题标记为重复问题的想法是试图将所有答案(好的和坏的)放在一个地方。你也许可以选择在最初的问题上悬赏,而不是再问同样的问题。听起来不错,我不熟悉这个概念。即使这不是我的问题,我也能提供赏金吗。。。它为您找出timeGetTime的粒度。另请看下面的进一步解释:是的,你可以在任何问题上提供悬赏。甚至还有一个特别的徽章可以用来做这件事:-)