如果使用来自同一线程的wxPostEvent / wxCallAfter发布多个事件,例如按钮点击是否应按相同顺序处理?

在下面的示例中,wx.Callafter用于发布最终将调用回调函数的事件,它们将以相同的顺序被调用,在这些中它们被传递给wx.CallAfter

def onbutton(self, event):
    wx.CallAfter(func1)
    # some more code
    wx.CallAfter(func2)
有帮助吗?

解决方案

CallAfter将事件发布到事件队列,应按顺序处理这些事件。仍然,它们是在空闲事件上处理的,而不是基于函数完成,所以func2可以在func1完成之前处理,具体取决于空闲事件的时间(例如wx.Yield等)。有关此问题的讨论此处,它似乎可以排序棘手。

其他提示

我相信应该得到保证。我有一些代码从线程中的串口抓取数据并触发事件以供wx处理。即使以115kbps的速度接收数据 - 它无疑会在处理之前触发几个事件 - 当wx调用我的处理程序打印/注销数据时,数据会按顺序显示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top