timeEndPeriod是否恢复以前或默认值?

假设默认的定时器分辨率是15ms。 鉴于这种情况:

Process A calls timeBeginPeriod(1); Now timer resolution is 1ms. Process B calls timeBeginPeriod(2); Now timer resolution is 2ms. Process B calls timeEndPeriod(2); 

什么是定时器分辨率呢? 它是否回落到1或15ms?

让我们稍微修改这个场景:

 Process A calls timeBeginPeriod(1); Now timer resolution is 1ms. Process B calls timeBeginPeriod(2); Now timer resolution is 2ms. Process A calls timeEndPeriod(1); 

现在什么是定时器分辨率? 它是否保持在2ms,直到进程B调用timeEndPeriod(2)?

来自MSDN:

Windows使用任何进程请求的最低值(即最高分辨率)。

假设你的进程是唯一调用timeBeginPeriod()那么:

问:什么是定时器分辨率呢? 它是否回落到1或15ms?

它没有改变,因为1ms(过程A所要求的)是最低分辨率(然后是应用的分辨率)。 所以答案是:这是1毫秒,当进程B提出请求时它不会改变,因为这是一个全局设置,然后应用最严格(最低)的设置。

问:现在的定时器分辨率是多少? 它是否保持在2ms,直到进程B调用timeEndPeriod(2)?

是的,因为现在最低要求的分辨率是2毫秒,所以系统将会timeEndPeriod(2)这个请求,直到timeEndPeriod(2)被调用。