我在想调用 SendMessage(阻塞式)与调用 PostMessage 结合 WaitForSingleObject(等待单个对象)有什么区别。您有什么想法吗?
SendMessage()
,而COM对象位于STA(调用通过消息泵分派)中,则可能会被拒绝。PostMessage()
不受限于遵守COM公寓规则。PostMessage()
将消息放置在窗口消息队列的末尾。 SendMessage()
绕过消息队列。您可以在Raymond Chen的博客The Old New Thing中找到有关消息队列的更长讨论。SendMessage()
和PostMessage()
之间的区别不止表面看起来那么简单。我真的建议阅读Raymond的博客,因为他多年来已经涵盖了许多陷阱。PostMessage
和 WaitForSingleObject
允许您进行异步消息传递。您可以发送一条消息,做其他事情,并稍后检查回复。SendMessage
是同步的,需要等待。
SendMessage是一个单一的API调用,因此更不容易出错。建议使用内置的而不是自己编写。