PostMessageのドキュメントによると、Windows 2000/XPではメッセージキューにポストできるメッセージの最大数は10,000個だそうです。キューがいっぱいな時にPostMessageすると失敗してFALSEが返ってきます*1。
QMAIL3では、同期しているスレッドがモデルの状態を変更したときには、最終的にUIスレッドに対してPostMessageでメッセージを投げて画面を更新するのですが、状況によってはキューにたまるメッセージが10,000個を超えてしまい画面が更新されなくなることがありました*2。
この現象が起きる可能性がもっとも高いのは、IMAP4を使っている場合で、同期済みのメッセージに対してサーバ上のフラグを反映させるときに、フラグが変わっているメッセージが大量に*3あった場合です*4。
キューに上限がなくてもこんなに大量のメッセージを投げていては効率が悪いので、PostMessageする側でキューにメッセージが残っているかどうかを調べて*5、無駄にメッセージを投げないようにしました。
今年は本当に開催されるようです。