Bonjour à tous,
Voulant créer organiser un client-serveur dans une librairie pour que ça soit portable pour de futur développements, j'ai crée une classe Client.
Cette classe fonctionne ou presque car j'ai un Thread d'écoute qui tourne pour vérifier si un message a été reçu. Lorsqu'il en trappe un, il lance un évènement (si il est défini).
Mon soucis est que je ne comprend pas trop comment résoudre mon problème inter-thread. Ma fenêtre crée un Client et s'abonne à l'évènement mais lorsque je déclenche l'évènement depuis mon Client pour le réceptionner dans la classe qui contient la fenêtre, ça coince. Mon but serais de faire comme on peut faire avec les composants standard, à savoir, je m'abonne puis je défini ce qui dois être fais.
Voici le code :
en faite, tout ce passe bien mais arrivé à la méthode "_client_ReceiceEventHandler", dès que j'utilise un élément de la fenêtre, ça explose. Pourtant, lorsque je m'abonne à des évènements dans des librairies ou autre par exemple, je n'ai pas ce problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 // Class client public delegate void ReceiveHandler(object sender, string text); public event ReceiveHandler ReceiceEventHandler; ... // Methode de connection _listener = new Thread(new ThreadStart(Receive)); _listener.Start(); ... // Methode Receive (du thread) if (message.Length != 0 && ReceiceEventHandler != null) { ReceiceEventHandler(this, message); } // Class de la fenetre (ça peut etre autre chose comme une console...) // Connection _client = new Client(Boite_Serveur.Text, Convert.ToInt32(Boite_Port.Text)); _client.ReceiceEventHandler += new Client.ReceiveHandler(_client_ReceiceEventHandler); ... void _client_ReceiceEventHandler(object sender, string text) { if (text.Contains("#liste")) { listeConnecte.Items.Clear(); string[] S_message = text.Split('|'); for (int i = 1; i < S_message.Length; i++) { listeConnecte.Items.Insert(listeConnecte.Items.Count, S_message[i]); } } ....
Partager