【发布时间】:2015-03-13 00:26:51
【问题描述】:
我已经阅读了关于从另一个线程调用SendMessage() 的两个相互矛盾的概念:
首先是消息会被投递到消息队列中。
-
二是会直接调用
SendMessage()。但是调用线程会阻塞,上下文切换到UI线程,然后窗口过程被调用,当它返回时,调用线程解除阻塞,上下文切换回它。
那么哪个是正确的?
【问题讨论】:
-
SendMessage() 从不发布到消息队列。 其中一些 将自动从调用线程封送到拥有该窗口的线程。但这仅适用于系统消息,Windows 本身知道的那种。不是可以依赖的东西。
-
SendMessage 中关于nonqueued messages 的链接可能有助于澄清这一点。基本上,消息以某种未指定的方式发送到目标线程,实际上可能是通过 some 类的队列 - 但它绕过了程序员可以直接操作的常规线程消息队列。跨度>