首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Windows 7下的时钟显示每6个慢滴答就有一个快速的滴答声?

为什么Windows 7下的时钟显示每6个慢滴答就有一个快速的滴答声?
EN

Stack Overflow用户
提问于 2014-03-21 08:24:08
回答 1查看 290关注 0票数 1

如果你仔细地观察windows 7下的窗口时钟,你会发现每6个慢滴答(长度相同)就有快速滴答。

我搜索了一下,找到了一个文章,它告诉windows 2K/XP/2K3设置了时钟:

代码语言:javascript
复制
SetTimer (hWnd, TimerID, OPEN_TLEN, 0L);

它给出了解释:

OPEN_TLEN是计时器的长度,它是一个常数。所以当我们看clock.h,你会得到这个号码,也就是450。这450是什么意思?这意味着,每450毫秒的计时器将被触发,它将检测时间的变化和重新绘制时钟。

然后他提到了我的问题:

顺便说一句,Vista/2K8下的时钟应用程序是完全重写的,所以您可能没有这个问题。但是,如果你看一分钟,你仍然会注意到一个“相当快”的秒。:)

如果他说的是真的,那么时钟的异常行为无疑是正确的,但我的问题是:

为什么windows的开发人员选择那个奇怪的450ms?如果是500ms,那么每一个滴答都会显示相同的长度。

在windows 7中,他们重写了时钟,根本没有解决问题,我想,一定有原因,开发人员不得不选择那个奇怪的重绘时间。

所以我想知道神秘的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 08:37:45

时钟将为1s注册一个定时器,并在每次触发计时器处理程序时简单地移动“秒”指针。

根据动态系统负载的不同,“秒”手的滴答移动将在每次迭代中延迟几毫秒。

偶尔(不知道多久一次,但似乎最多一分钟),时钟应用程序将检查实际的系统时间来同步计时器(因此“秒”手的移动)。此时,它将赶上实际时间,过去几次累积的所有延迟都将得到纠正。--这是时钟的“秒”指针的快速滴答。

为什么要这么做?

时钟应用程序不能保证精确到毫秒。由于每秒钟检查一次系统时间是昂贵的,因此可以避免上述重新设计。然而,为了补偿时钟-app (w.r.t )上显示的时间的“漂移”。(实际的系统时间)应用程序会偶尔检查一下系统时间;因此,使用“快速”勾选。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22553623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档