我对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 ......但是发生了一些奇怪的事情......
答案 0 :(得分:1)
来自链接文章:GetLastError
在达到邮件限制时返回ERROR_NOT_ENOUGH_QUOTA
。因此,每次尝试在队列填满时发送/发布消息都会失败,这就是全部。
通常,目标线程处理消息并将其从队列中删除。带有PeekMessage
标志的PM_NOREMOVE
允许处理邮件而不删除它。作为参考,PeekMessage
函数:https://msdn.microsoft.com/en-us/library/windows/desktop/ms644943%28v=vs.85%29.aspx