【发布时间】:2012-07-10 15:21:32
【问题描述】:
是否有可能巧妙地使用PostMessage、GetMessage 等对LIFO 消息进行排队(假设发送方和接收消息循环合作),还是我需要推出自己的解决方案?
如果您想知道用例,那就是图标加载。您总是希望首先加载最近请求的图标。 :)
【问题讨论】:
标签: winapi stack message-queue getmessage
是否有可能巧妙地使用PostMessage、GetMessage 等对LIFO 消息进行排队(假设发送方和接收消息循环合作),还是我需要推出自己的解决方案?
如果您想知道用例,那就是图标加载。您总是希望首先加载最近请求的图标。 :)
【问题讨论】:
标签: winapi stack message-queue getmessage
不,您需要自己滚动 - Windows 消息队列有一个最大大小,如果它被填满,从 COM、DDE 到用户交互,各种事情都会出现严重错误。
您应该使用受临界区保护的双端队列(或类似的),而不是使用线程队列。
每个消息队列的发布消息限制为 10,000 条。这个限制应该足够大。如果您的应用程序超出限制,则应重新设计它以避免消耗过多的系统资源。
另请参阅可能出错的示例:
【讨论】: