PostThreadMessage / GetMessage : perte de messages
swonder
Messages postés9Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 7 décembre 2009
-
18 janv. 2004 à 17:12
swonder
Messages postés9Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 7 décembre 2009
-
18 janv. 2004 à 20:30
Bonjour,
J'ai un problème de perte de messages dans la communication inter-thread, que je suppose dû au fait que GetMessage n'a pas de file d'attente des messages.
Voici le code qui créé le thread et lui envoie des messages thread :
Quand j'exécute tout ca, seul le premier message envoyé au thread est traité, les 2 autres rien. En me renseignant, j'ai vu que GetMessage n'a pas de file d'attente. Le problème à été momentanément résolu en faisant des sleep mais cette solution ne me plait pas du tout.
En fouinant dans la MSDN et dans les forums du site, j'ai vu qu'on pouvait utiliser des Hook, alors j'ai testé avec le code suivant :
swonder
Messages postés9Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 7 décembre 2009 18 janv. 2004 à 20:05
Je me doutais un peu que c'était les message box qui posait problème. Elles ne sont là que pour tester, à terme il ne devrait plus y en avoir. Tu veux donc dire que si je les supprime et que je les remplaces par autre chose (genre un fprintf dans un fichier, ou un send dans un socket) mon problème devrait être résolu ?
Merci,
Steve
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 18 janv. 2004 à 20:08
on va dire que CETTE source de probleme disparait, ensuite a toi de bien penser ton prog avant de l'ecrire pour ne pas creer de nouveaux pieges.
BruNews, ciao...
swonder
Messages postés9Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 7 décembre 2009 18 janv. 2004 à 20:30
Voilà je viens de finir de tester et ca m'a l'air de fonctionner.
J'ai supprimé les MessageBox par un fprintf dans un fichier de debug, et j'ai supprimé le Sleep par une synchronisation avec un évenement et un PeekMessage(NOREMOVE) juste avant pour initialiser la file des messages.
Voici le code (ptêtre que cela pourra servir à qqun d'autres).
DWORD WINAPI DemarrerThreadClavierSouris (LPVOID lpParam)
{
// Ajout d'une information dans le fichier de debug
AddInfoDebugFile ("DemarrerThreadClavierSouris : début");