2009-06-02 6 views
2

Nous avons une application qui utilise la file d'attente des messages de fenêtre pour transmettre des données d'une socket vers des HWND grand public (à un débit de ~ 2100Hz). Cette application a travaillé pendant> 2 ans. Récemment, notre application a commencé à montrer des problèmes où WM_TIMER n'est pas lancé/exécuté par notre application. Je pense que cela est dû au pompage des données dans la file d'attente des messages.Détermination de la profondeur de la file d'attente des messages de fenêtre

Ma question est là un moyen de déterminer combien de messages en attente sont dans la file d'attente de messages pour un thread/HWND donné?

Répondre

0

Il n'y a pas de bon moyen de le faire. Une chose que vous pourriez faire est agressivement vider le message et les mettre dans votre propre file d'attente. Mais, cela ne résoudra pas votre problème.

Je déteste vous le dire, mais vous devriez vraiment trouver un moyen de traiter vos données de socket. Je pense que vous trouverez d'autres échelles de mécanisme mieux, performantes et plus faciles à déboguer que d'utiliser la file d'attente des messages Windows pour cela.

Foredecker

+0

Merci, C'est ce dont j'avais peur. Je voulais juste voir à quel point la file d'attente des messages était en train de vérifier que mon problème était dans ce morceau de code avant de redessiner ce flux de données. – tallganglyguy

6

Cette réponse en détail vraiment grand par Raymond Chen dans son poste "but then we ran into problems when we started posting 10,000 messages per second".

L'équipe de recherche a demandé à rencontrer l'équipe de l'interface utilisateur pour aider le travail leurs problèmes en charge. Ils décrit leur conception et explique qu'il a bien fonctionné à des débits de données faibles, mais nous avons ensuite rencontré des problèmes lorsque nous avons commencé à publier 10 000 messages par seconde . "

À ce moment-là, les têtes de toutes les personnes de l'interface utilisateur se sont juste assis là et ont bogué pendant quelques secondes. "C'est comme dire que votre Toyota Camry a des problèmes de stabilité lorsque vous obtenez plus de 500 miles par heure."

Questions connexes