|
|
1
2
您可以将wt_ExecuteOnlyOnce标志传递给createTimerQueueTimer函数。这将导致计时器只触发一次,而不是周期性地触发。 然后可以使用ChangeTimerQueueTimer方法重新安排计时器。 要覆盖在帧中绘制的时间太长、太完整,可以在TimerHandler方法的开头添加一个CriticalSection,这将导致第二个计时器等待第一个计时器完成。 |
|
|
2
1
如果你想以50fps+的速度运行某个程序,你最好实际使用一个绘制循环来计算帧之间的时间,并相应地缩放动画。计时器并不是经常开火的。所以(这可能在空闲处理程序中)。例如,此伪代码(忽略缺少错误处理):
|
|
|
3
1
如果计时器尚未计划,则DeleteTimerQueueTimer将取消该计时器。(当您使用wt_ExecuteTimerThread时,我相信它们作为线程上的APC从计时器队列和工作线程共享的线程池排队。)如果它已经被调度(而不仅仅是运行),它将被运行,并且DeleteTimerQueueTimer调用将被阻塞,直到完成为止。 如果我正确理解你的问题,我可以提出以下建议吗? 1。在调用DeleteTimerQueueTimer之前-将标志say abortalTimers设置为true。 2。在每个计时器回调函数中,检查abortalTimers是否为true。如果是真的-那么立刻返回,不做任何绘制。 最后,不应从计时器回调调用-deleteTimerQueueTimer。相反,我建议您应该从任何其他线程调用它——比如您用来启动计时器的线程。 希望这有帮助。 |
|
|
AryA Derakhshan · 在指定的时间重复循环 4 年前 |
|
|
user8105388 · If语句不与计时器一起工作 8 年前 |
|
|
Don · 无限循环崩溃,但不在更新函数中 8 年前 |
|
|
user9769106 · 绘制形状C的路径# 8 年前 |
|
|
SPlatten · MSVC 2008更好的时机? 8 年前 |