我有一个可以制作动画的Windows程序。它使用QueryPerformanceCounter
来获取当前时间并确定自上次动画节拍以来经过了多长时间。当我调试程序并在断点停留一段时间后,一旦我继续执行,下一个动画节拍将非常长(即它包括在调试器中暂停执行所花费的时间)。
这通常导致在断点被击中的时间点之后不久发生的丢失事件。它也使得无法通过动画来“滴答滴答”。
有哪些方法可以避免此类问题?有没有一种机制可以计算在调试器中花费的时间,以便从程序内部时间逻辑中减去它?
具体来说,我正在寻找一种不涉及“钳制时间步长”的方法。我的后备是使用IsDebuggerPresent
并简单地将大刻度限制到某个预定义的持续时间,但我想看看是否有专门的API或一个聪明的技巧以更强大的方式执行此操作。理想情况下,只有一些Visual C ++扩展/内在只是TimeElapsedWithExecutionSuspended
。