Win32消息队列有多深?


13

队列中标准窗口持有多少条消息?当队列溢出时会发生什么?

GetMessage和亲属的文档对此没有任何说明,而PeekMessage仅给出某些类别的消息是/否,而不是消息数量。

This page说,队列使用内存映射文件来实现,并没有消息数限制,但网页是关于WinCE的。这是否也适用于桌面Win32?

13

10000默认,但它可以通过注册表来调整。

如果队列溢出,PostMessage失败。

文档浏览:

PostMessage function on MSDN

  0

涵盖2000/XP - 关于Vista的任何想法? 23 9月. 082008-09-23 19:52:35

  0

我刚刚查看了Vista Business SP1机器上该文章中列出的注册表项,并将其设置为10000.不过,我不知道这是确定Vista上队列长度的唯一因素。 23 9月. 082008-09-23 19:55:52

  0

我不*知道*,但它不会有所不同。 Vista并不是那么具有革命性,我不认为... 23 9月. 082008-09-23 19:59:05

+1

还有一件事 - 如果你想用消息队列作为这个由另一个线程提供的队列,我想你会失望结果。你最终会得到一个没有反应的GUI。我们公司对这种失败的设计技术有很多经验。 23 9月. 082008-09-23 20:00:44

  0

你好,科里,谢谢你的回答。上述限制和注册表项(可以调整)也适用于Windows 8。 22 8月. 132013-08-22 12:06:15


3

由于MSDN文章中说,如果你需要担心的消息队列的大小,你可能会更好重新设计你的应用程序。

  0

在这种情况下,我们在队列的另一边;我们的设备驱动程序正在发布消息,而玩具Flash应用程序在几分钟后陷入停滞状态。 24 9月. 082008-09-24 13:17:11