Windows计时器,结束时间如何确定?

时间:2018-08-17 18:05:48

标签: windows events timer timeout

Windows如何管理其计时器。 例如,如果我有1分钟的超时时间,它会标记(计数)时间,还是为到达该时间设置唤醒时间?

我问的原因是,我们有一个有时会失败的应用程序,而这种情况经常发生在由于未知的原因将机器时间提前将近60秒。

The system time has changed to ?2018?-?08?-?16T22:07:21.184000000Z from ?2018?-?08?-?16T22:06:22.931000700Z.

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Microsoft-Windows-Kernel-General" Guid="{A68CA8B7-004F-D7B6-A698-07E2DE0F1F5D}" /> 
  <EventID>1</EventID> 
  <Version>0</Version> 
  <Level>4</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8000000000000010</Keywords> 
  <TimeCreated SystemTime="2018-08-16T22:07:21.184000000Z" /> 
  <EventRecordID>59985</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="1636" ThreadID="1712" /> 
  <Channel>System</Channel> 
  <Computer>PDC2FEP007.domain</Computer> 
  <Security UserID="S-1-5-18" /> 
  </System>
- <EventData>
  <Data Name="NewTime">2018-08-16T22:07:21.184000000Z</Data> 
  <Data Name="OldTime">2018-08-16T22:06:22.931000700Z</Data> 
  </EventData>
  </Event>

很显然,我们将尝试找出令人讨厌的时间设置程序,但是在此期间,我只是很好奇

1 个答案:

答案 0 :(得分:0)

我在互联网上发现了以下内容: “根据MSDN,应用程序使用计时器在指定的时间过去之后为窗口安排事件。这意味着,如果我们创建计时器并指定uElapse毫秒的时间间隔,它将每隔uElapse毫秒执行一次“某事” ,直到我们销毁它为止。由我们来决定什么是“东西”。

因此,我特别从这一点出发假设:“它将每隔u毫秒执行一次“操作”,直到我们销毁它为止”,它每毫秒都在计数。