Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何确定当前的Windows计时器分辨率?_C#_Windows_Winapi_Timing - Fatal编程技术网

C# 如何确定当前的Windows计时器分辨率?

C# 如何确定当前的Windows计时器分辨率?,c#,windows,winapi,timing,C#,Windows,Winapi,Timing,这可能很明显,但我找不到/google获得计时器分辨率当前系统值的正确方法,程序可以通过timeBeginPeriod(n)/timeEndPeriod(n)设置计时器分辨率。我想知道目前的解决方案是什么。。。Windows7的默认值似乎是15.6ms,但其他应用程序或机器供应商可能已更改该设置 有些工具会报告值,但我需要在应用程序中读取值 感谢您提供的任何快速提示或链接。C#将是一个加号,但我知道我的方法 编辑: 多亏了这个答案,我用C#制作了一个小工具,它使用了所描述的方法: Window

这可能很明显,但我找不到/google获得计时器分辨率当前系统值的正确方法,程序可以通过timeBeginPeriod(n)/timeEndPeriod(n)设置计时器分辨率。我想知道目前的解决方案是什么。。。Windows7的默认值似乎是15.6ms,但其他应用程序或机器供应商可能已更改该设置

有些工具会报告值,但我需要在应用程序中读取值

感谢您提供的任何快速提示或链接。C#将是一个加号,但我知道我的方法

编辑: 多亏了这个答案,我用C#制作了一个小工具,它使用了所描述的方法:


Windows计时器分辨率由隐藏的API调用提供:

NTSTATUS NtQueryTimerResolution(OUT PULONGMinimumResolution, 
                                OUT LONGMaximumResolution, 
                                OUT PULONGActualResolution);
NtQueryTimeResolution由本机Windows NT库NTDLL.DLL导出

通用硬件平台报告156250或100144用于实际解决方案;较旧的平台可能报告更大的数字;较新的系统,特别是支持HPET(高精度事件计时器)或恒定/不变TSC时,可能会返回156001进行实际解析

timeBeginPeriod(n)
的调用将反映在实际解决方案中


答案中有更多细节。

是的,我看到了这个帖子,但实际问题没有答案……这可能是真的,但将问题标记为重复问题的想法是试图将所有答案(好的和坏的)放在一个地方。你也许可以选择在最初的问题上悬赏,而不是再问同样的问题。听起来不错,我不熟悉这个概念。即使这不是我的问题,我也能提供赏金吗。。。它为您找出timeGetTime的粒度。另请看下面的进一步解释:是的,你可以在任何问题上提供悬赏。甚至还有一个特别的徽章可以用来做这件事:-)