c# - 在没有 NtSetTimerResolution 的情况下增加 Windows 上的计时器分辨率(高分辨率)
问题描述
我正在寻找某种具有比 Windows 默认约 15 毫秒更高分辨率的计时器。我不需要一个计时器来测量时间,而是一个能够等待 X 毫秒(或每 X 毫秒调用一次事件)的计时器。我知道可以使用 更改 Windows 计时器分辨率NtSetTimerResolution
,但这会影响所有应用程序(我不想要)。我不需要太多的精度,所以说如果我正在寻找 2ms,那么 1.5ms 和 2.5ms 也可以。
使用微调器可以工作,但这显然会导致过多的 CPU 使用率。只要能够完成工作,也欢迎有创意的想法。
解决方案
NtSetTimerResolution
并且timeBeginPeriod
可以增加计时器分辨率,但它们是系统范围的。如果有人有好主意,请告诉我。
我不建议你这样做。Google 已修改 Chrome 以仅在必要时增加计时器频率,这在大多数情况下都有效。
Windows 上的默认计时器分辨率为 15.6 毫秒 - 计时器每秒中断 64 次。随着程序增加定时器频率,它们会增加功耗并缩短电池寿命。它们浪费的计算能力也比我预期的要多——它们会降低你的计算机速度!由于这些问题,微软多年来一直在告诉开发人员不要增加定时器频率。
推荐阅读
- c# - 当 WPF “ResourceDictionary Warning 9 Resource not found”没有告诉我资源键时,如何追踪它?
- python - 尝试制作乒乓球运动员时,按向上键会出现错误:一个位置参数,但给出了两个
- python - Django-Rest 框架:如何从下拉列表中排除当前登录的用户
- python - Tkinter第一次点击第一个函数,第二次点击第二个函数
- javascript - 在 react js 中转换为有效的 json 格式
- microsoft-graph-api - Microsoft Graph API - 从非管理员处收集数据
- flutter - Dart 中的循环队列
- delphi-5 - 删除 Delphi 5 应用程序所需的提升权限
- javascript - 仅在控制台中工作的简单书签
- sql - 从 openrowset 批量中选择(.sql 文件的路径)