MFC 消息队列限制

MFC Message Queue Limit

我对MFC线程中消息队列大小限制的理解来自于MSDN的PostThreadMessage页面上的解释。

https://msdn.microsoft.com/en-us/library/windows/desktop/ms644946%28v=vs.85%29.aspx

如前所述,默认限制为 10000 条消息。我试图准确理解这个限制是什么。我认为这是两件事之一。

场景A

我有一个处理消息的 GUI。将消息放入队列的速率大于将这些消息从队列中拉出并进行处理的速率。在这种情况下消息不断累积,最终队列中有 10000 条消息,另一条消息试图加入队列,但失败了。

场景 B

我有一个处理消息的 GUI。将消息放入队列的速率低于将这些消息从队列中拉出并处理的速率。消息不会在队列中累积。但是在我的队列看到 10000 条消息后,它就变得无用了,所以实际上,我的消息队列的使用寿命有限。

我越想越觉得答案应该是场景A...但是奇怪的事情发生了..

来自链接的文章:GetLastError returns ERROR_NOT_ENOUGH_QUOTA 当达到消息限制时。因此,当队列已满时,每次尝试 send/post 消息都会失败,仅此而已。

通常,目标线程处理消息并将它们从队列中移除。 PeekMessagePM_NOREMOVE 标志允许在不删除消息的情况下处理消息。作为参考,PeekMessage函数:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644943%28v=vs.85%29.aspx