繁体   English   中英

SendMessage 与 PostMessage + WaitForSingleObject

[英]SendMessage vs PostMessage + WaitForSingleObject

我想知道调用 SendMessage(哪个块)和调用 PostMessage 与 WaitForSingleObject 有什么区别。 想法?

如果您从 COM object 位于 STA 中的 COM 的上下文中调用SendMessage() ,则可能会被拒绝(调用通过消息泵发送)。 PostMessage()不限于遵守 COM 公寓规则。

此外, PostMessage()将消息放在窗口消息队列的末尾。 SendMessage()绕过队列。 您可以在 Raymond Chen 的博客The Old New Thing上找到关于消息队列的更长讨论。

我的观点是, SendMessage()PostMessage()之间的区别比表面上看到的要多。 我真的建议您浏览 Raymond 的博客,因为他多年来介绍了许多问题。

PostMessageWaitForSingleObject允许您进行异步消息传递。 您可以发送消息、执行其他操作,然后稍后再查看回复。 SendMessage是同步的,需要您等待。

我一直认为 SendMessage 直接调用你的 windows 过程,跳过消息队列; 而 PostMessage 只是将消息添加到队列中。

SendMessage 是单个 API 调用,因此不太容易出错。 Go 内置而不是自己滚动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM