在我的程序中,我需要在GUI中使用超时。例如,用户开始使用GUI,超时开始couting。当他到达某个阶段时,当前超时被丢弃并且新的开始。
我在考虑使用Timer& TimerTask类以这种方式执行:
TimerTask1 - >做一些事情(包括计时器取消和清除)
TimerTask2 - >做另一件事(包括计时器取消和清除)
计时器 - >一个计时器用于两个任务,因为他们不会并行运行。
代码如下所示:
=== user starts using GUI at stage A ===
Timer.shedule(TimerTask1, neededAmountOfTime)
==after reaching stage B==
Timer.cancel()
Timer.purge()
Timer.shedule(TimerTask2, neededAmountOfTime)
==after reaching final stage C==
Timer.cancel()
Timer.purge()
它会像我认为的那样起作用吗?在阶段A,如果用户未在分配的时间内到达阶段B,则调度并触发TimerTask1。如果他到达阶段B,则会终止Timertask1并安排TimerTask2。如果用户未在分配的时间内到达阶段C,则触发TimerTask2。如果用户在分配的时间内到达阶段C,则触发非TimerTasks。
我的想法是对的吗?
编辑:
我尝试了上述方法。取消定时器后的当然,我必须在安排它之前创建一个新的。问题是,有时计时器工作,有时不工作。有没有办法检查TimerTask是否在Timer上正确安排?