Wie tief ist die Win32-Nachrichtenwarteschlange?


13

Wie viele Nachrichten enthält die Warteschlange für ein Standardfenster? Was passiert, wenn die Warteschlange überläuft?

Die Dokumentation für GetMessage und Verwandten sagt nichts darüber, und PeekMessage gibt Ihnen nur eine Ja/Nein für bestimmte Klassen von Nachrichten, nicht eine Nachricht zählen.

This page sagt, dass die Warteschlangen mit Speicher-Mapped-Dateien implementiert werden, und dass es keine Anzahl der Nachrichtenanzahl gibt, aber diese Seite ist über WinCE. Gilt das auch für Desktop Win32?

13

10000 standardmäßig, aber es kann über die Registrierung angepasst werden.

Wenn die Warteschlange überläuft, schlägt PostMessage fehl.

Dokumentation hier:

PostMessage function on MSDN

  0

Das deckt 2000/XP - irgendeine Idee über Vista? 23 sep. 082008-09-23 19:52:35

  0

Ich habe mir nur den Registrierungsschlüssel angesehen, der in diesem Artikel auf einem Vista Business SP1-Computer aufgeführt ist, und er ist auf 10000 eingestellt. Ich weiß nicht, ob das der einzige Faktor bei der Bestimmung der Warteschlangenlänge unter Vista ist. 23 sep. 082008-09-23 19:55:52

  0

Ich weiß nicht * aber es wäre unwahrscheinlich, anders zu sein. Vista ist nicht so revolutionär, ich glaube nicht ... 23 sep. 082008-09-23 19:59:05

+1

Noch eine Sache - wenn Sie daran denken, die Nachrichtenwarteschlange als, ähm, eine Warteschlange zu verwenden, die von einem anderen Thread gespeist wird, werden Sie enttäuscht sein die Ergebnisse. Sie werden am Ende mit einer nicht reagierenden GUI enden. Unsere Firma hat viel Erfahrung mit genau dieser fehlgeschlagenen Konstruktionstechnik. 23 sep. 082008-09-23 20:00:44

  0

Hallo Corey, danke für die Antwort. Das erwähnte Limit und der Registrierungsschlüssel (der angepasst werden kann) funktionieren auch für Windows 8. 22 aug. 132013-08-22 12:06:15


3

Wie in dem MSDN-Artikel erwähnt, wenn Sie über die Größe der Nachrichtenwarteschlange kümmern, könnten Sie besser dran Redesign der Anwendung sein.

  0

In diesem Fall sind wir auf der anderen Seite der Warteschlange; Unser Gerätetreiber sendet die Nachrichten, und eine Flash-Anwendung für Spielzeug wurde nach ein paar Minuten verbraucht. 24 sep. 082008-09-24 13:17:11