0

我正在编写一个保留在托盘栏中的应用程序,并每隔几分钟进行一次检查。当它执行此检查时,我希望托盘栏图标具有动画效果。这就是为什么我有第一个wxTimer触发检查。在它的OnTimer调用中,我试图管理第二个wxTimer来处理动画。

问题是计时器在主循环中工作,因此当第二个计时器更新图标索引时,图标不会更新。

有没有办法克服这个问题?

谢谢!

4

2 回答 2

0

不幸的是,您对问题的描述根本不清楚,但如果您的意思是在重新进入事件循环之前您没有收到计时器事件,这确实是真的,而且几乎是重言式 - 您需要返回事件循环获取任何事件。

这就是为什么您的事件处理程序应该始终快速执行并将控制权返回给主循环的原因。如果它们花费的时间太长,通常的解决方案是使用后台线程进行实际工作,并将其安排在您的事件处理程序中,而不是等到它完成。

于 2013-10-13T22:41:03.457 回答
0

基于Ryan G的评论

可以合并wx.Yield()到主循环中。这通常用于临时释放全局锁以允许小部件更新。也可以创建一个单独的线程来独立于主线程更新动画。

使用wx.Yield()应该更容易实现。

于 2013-10-17T20:59:57.423 回答