我对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.但奇怪的事情发生了..。
发布于 2015-02-11 11:58:47
在链接的文章中:当到达消息限制时,GetLastError返回ERROR_NOT_ENOUGH_QUOTA。因此,在队列已满时,每次发送/发布消息的尝试都会失败,仅此而已。
通常,目标线程处理消息并从队列中删除它们。带有PeekMessage标志的PM_NOREMOVE允许在不删除消息的情况下处理消息。供参考,PeekMessage函数:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644943%28v=vs.85%29.aspx
https://stackoverflow.com/questions/28453143
复制相似问题