Bonjour,
je suis en train de développer ma première application Client/Serveur qui consiste à balancer des alertes aux utilisateurs de l'entreprise.
d'un coté j'ai mon serveur qui interroge une base de données, qui écoute les connexions des client et leur balance toutes les 10 secondes des messages d'alerte (s'il y en a).
Le coté serveur fonctionne parfaitement.
du coté client, j'ai un Winform caché (ou non, on peut l'afficher si l'on veut) dont une icône est affichée dans le systray.
Ce client possède un thread 'TCP' qui se connecte au serveur et écoute ses messages.
Lorsque ce thread reçoit un message, il génère un event, que le Winform client consomme.
le Client contient un 'List<popup>', quand il reçoit l'event dont j'ai parlé précédemment, il crée un popup (winform), l'ajoute dans sa liste et l(les)'affiche(s) en bas à droite de l'écran.
Tout cela fonctionne SAUF QUE : Le popup s'affiche mais reste figé, ne dessine pas tous ses composants, est non cliquable avec un waitcursor en permanence quand je passe la souris dessus;
Aucune erreur n'est générée.
Comme si son thread était complètement arrêté.
Normalement, mon popup a un timer qui se déclenche toutes les demi-secondes pour le faire clignoter, j'ai beau mettre un point d'arret sur le callback du timer, il n'est jamais déclenché. (et pourtant quand j'utilise ces popups indépendamment ils clignotent bel et bien).
Est-ce car ces popups sont créés par un event généré par un autre thread ?
Dans tous les cas, quand mon programme d'alerte était monothread (le client récupérait lui même les infos de la base de données) tout fonctionnait très bien.
Difficile de donner un bout de code vu la taille du projet.
et j'ai beau mettre des .InvokeRequired .Invoke() partout le problème reste (de toute manière aucune erreur n'est générée)
Si quelqu'un s'est déjà retrouvé devant un tel problème et a une idée je suis très intéressé
Partager