我假设当我们呼叫SendMessage
& PostMessage
时,消息的处理顺序与调用的Send/PostMessage
相同。但是如document所示,如果当前线程是正确的,则SendMessage
将执行该函数。Windows消息队列是否以FIFO方式处理消息?
如果指定的窗口是由调用线程创建的,则窗口 立即作为子例程调用。
因此,在下面的情况:
PostMessage(currentThreadWindow, postMsg, ...) // line 1
SendMessage(currentThreadWindow, sendMsg...) // line 2
的sendMsg
将postMsg
前处理。
那么消息传递给SendMessage
和PostMessage
保持顺序?
您已经举了一个例子,其中没有维护订单。不确定你的问题是什么。 –
@Raymond Chen,那么有没有关于消息顺序处理的任何细节评论?我们有很多合乎逻辑的顺序。例如,如果海报不是目标线程本身,订单是否会保留。 – ZijingWu
如果你穿过线程,你会得到更少的保证。您示例的消息可以按任意顺序接收。您得到的唯一保证是,如果消息队列中没有任何优先级较高的消息,则将分派低优先级消息。 – IInspectable