我正在编写一个留在托盘栏中的应用程序,每隔几分钟就会进行一些检查。
当它执行此检查时,我希望托盘栏图标是动画的。
这就是为什么我有第一次wxTimer
触发检查。在OnTimer
调用中,我尝试管理第二个wxTimer
来处理动画。
问题是计时器在主循环中工作,因此当第二个计时器更新图标索引时,图标不会更新。
有没有办法克服这个问题?
谢谢!
答案 0 :(得分:0)
遗憾的是,你对这个问题的描述一点也不清楚,但如果你的意思是在你重新进入事件循环之前你没有得到计时器事件,这确实是真的,而且,几乎是同义 - 你需要返回事件循环以获取任何事件。
这就是为什么你的事件处理程序应该总是快速执行并将控制权返回给主循环的原因。如果它们花费的时间太长,通常的解决方案是使用后台线程进行实际工作,并在事件处理程序中安排它,但不要等到它完成。
答案 1 :(得分:0)
基于Ryan G的评论
可以将wx.Yield()
合并到主循环中。这通常用于临时释放全局锁以允许窗口小部件更新。
也可以创建一个单独的线程来独立于主线程更新动画。
使用wx.Yield()
应该更容易实现。