2011-03-16 45 views
6

如果我队列PostMessage的消息(并返回true),我可以肯定的是,最终的窗口将处理消息,除非一些灾难性事件发生?(一些东西,无论如何都会引起程序崩溃)Windows消息有多强大?

回答

6

一旦发布的消息不要不会从队列中消失。

我们的产品之一是Windows服务,它使用Windows消息在线程之间进行通信,并且严重依赖于它们。到目前为止,我们看到的唯一问题是,如果您发布速度太快,队列就会填满并且不会接收更多消息,直到有人开始排队。

4

如果呼叫PostMessage()成功,您可以确定该消息将在队列中。

PostMessage()如果接收队列已满,将会失败。 MSDN说:

每个消息队列的消息数限制为10,000个,发送的消息数为 。这个限制 应该足够大。如果您的 应用程序超出限制,则应重新设计其 以避免 消耗如此多的系统资源。要 调整此限制,请修改以下注册表项中的 。

您不能确定发布的邮件会被处理,因为它取决于其他应用程序来决定是否泵送其邮件队列。

这是一个有点迂腐,因为实际上从来没有泵过它的队列的应用程序永远不会由任何人通过自然选择的过程运行!