2011-03-16 67 views
6

如果我隊列PostMessage的消息(並返回true),我可以肯定的是,最終的窗口將處理消息,除非一些災難性事件發生?(一些東西,無論如何都會引起程序崩潰)Windows消息有多強大?

回答

6

一旦發佈的消息不要不會從隊列中消失。

我們的產品之一是Windows服務,它使用Windows消息在線程之間進行通信,並且嚴重依賴於它們。到目前爲止,我們看到的唯一問題是,如果您發佈速度太快,隊列就會填滿並且不會接收更多消息,直到有人開始排隊。

4

如果呼叫PostMessage()成功,您可以確定該消息將在隊列中。

PostMessage()如果接收隊列已滿,將會失敗。 MSDN說:

每個消息隊列的消息數限制爲10,000個,發送的消息數爲 。這個限制 應該足夠大。如果您的 應用程序超出限制,則應重新設計其 以避免 消耗如此多的系統資源。要 調整此限制,請修改以下注冊表項中的 。

您不能確定發佈的郵件會被處理,因爲它取決於其他應用程序來決定是否泵送其郵件隊列。

這是一個有點迂腐,因爲實際上從來沒有泵過它的隊列的應用程序永遠不會由任何人通過自然選擇的過程運行!