Bonjour,
Après de longues recherches sur le forum, je n'ai pas trouvé de cas similaire donc je ne pense pas vraiment que mon problème est récurrent.
Idée principale: Je souhaite lancer une application serveur et plusieurs applications clients, les applications clients se connectant au serveur via send() et recv() avec un système de thread que je possède déjà.
Il y a donc un thread listen sur le serveur qui crée automatiquement un thread supplémentaire pour chaque client avec un recv(). La fermeture client est contrôlée, la fermeture du serveur ferme tous les clients via un système de paquets avec lecture d'entête. Pour le fonctionnement serveur / clients, tout fonctionne. Je pars donc d'un programme qui roule.
C'est la que ca se complique. Je suis parti d'un mode console pour passer au mode graphique. J'utilise les MFC car j'ai Visual.NET.
J'ai commencé un projet MFC, de type boite de dialogue pour mon serveur. J'ai fait mon interface en insérant des composants sur ma boite, et placé un (CMyDialog:UpdateData() après avoir modifié mes variables d'initialisation et de début de programme.
Mais voilà, je souhaite avoir la mise à jour de ces variables dès lors que les clients arrivent sur le serveur. Comme je ne peux pas mettre d'UpdateData() dans mes threads car ils seraient isolés de la classe de la boite de dialogue (j'ai essayé, ca n'a pas marché mais j'ai vu que les attributs de la boite de dialogue étaient exportables). J'ai tenté de mettre un timer avec la fonction (CMyDialog:OnTimer() dans mon thread. Rien y fait.
Je voudrais donc savoir s'il y a une solution élégante pour mettre à jour les éléments de la boîte de dialogue.
J'ai réfléchi que le DoModal() peut être la cause de ce problème. Mais je n'ai pas d'idée pour pouvoir gérer efficacement le problème.
En rajoutant un Timer, ca ne marche pas (je placais le SetTimer() et le OnTimer() dans cette méthode, et un KillTimer dans le OnOk() + OnCancel().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2// Ici il y avait du code mais il était périmé. Il a été retiré car il nuisait à la compréhension générale.
J'ai essayé de mettre le OnTimer dans un thread grâce à un pointeur sur la classe CDialog, ca ne marche pas non plus.
J'attends donc vos suggestions. Merci d'avance.
Partager