如果我使用PostMessage对一条消息进行排队(它返回true),我能确定最终窗口将处理该消息吗?除非发生一些灾难性事件(无论如何都会导致程序崩溃)。
发布于 2011-03-16 21:56:29
一旦发布了消息,就不会从队列中消失。
我们的一个产品是Windows服务,它使用Windows消息在线程之间通信,它严重依赖于它们。到目前为止,我们看到的唯一问题是,如果你发布它们太快,队列就会填满,并且不会接受更多的消息,直到有人开始排空队列。
发布于 2011-03-16 21:59:45
您可以确定,如果对PostMessage()的调用成功,消息将在队列中。
如果接收队列已满,PostMessage()将失败。MSDN说:
每个消息队列最多只能发送10,000条消息。这个限制应该足够大。如果您的应用程序超出了限制,则应该重新设计它,以避免消耗太多系统资源。要调整此限制,请修改以下注册表项。
你不能确定发布的消息是否会被处理,因为这取决于其他应用程序是否抽出它的消息队列。
这有点书呆子气,因为在现实中,一个不会抽出队列的应用程序永远不会被任何人通过自然选择的过程来运行!
https://stackoverflow.com/questions/5326332
复制相似问题