如果使用来自同一线程的wxPostEvent / wxCallAfter发布多个事件,例如按钮点击是否应按相同顺序处理?
在下面的示例中,wx.Callafter用于发布最终将调用回调函数的事件,它们将以相同的顺序被调用,在这些中它们被传递给wx.CallAfter
def onbutton(self, event):
wx.CallAfter(func1)
# some more code
wx.CallAfter(func2)
答案 0 :(得分:1)
CallAfter将事件发布到事件队列,这些事件应按顺序处理。仍然,它们是在空闲事件上处理的,而不是基于函数完成,因此func2可以在func1完成之前处理,具体取决于空闲事件的时间(例如wx.Yield等)。有关此问题的讨论here,它似乎有点棘手。
答案 1 :(得分:0)
我相信应该得到保证。我有一些代码从线程中的串口抓取数据并触发事件以供wx处理。即使以115kbps的速度接收数据 - 它无疑会在处理之前触发几个事件 - 当wx调用我的处理程序打印/注销数据时,数据会按顺序显示。