
Envoyé par
taspai
Tout d'abord merci pour ces explications détaillées !
L'idée de passer le thread n'est pas bête du tout mais pour être honnête cette idée n'est pas super claire a mes yeux car le thread est déclaré plus haut et comment l'utiliser simplement ensuite ?
En revanche il serait peut être possible de passer une structure ou une classe contenant socketclient et thServer (ma classe) dedans et de les utiliser comme ça ?
Je vais me documenter sur le dictionnaire de threads !
que je le thread soit déclaré ici ou ailleurs, tant que vous avez une référence (= une variable qui pointe vers l'instance) vous pouvez le manipuler
sinon une classe avec des propriétés (socket, thread et autre éventuellement) est en effet la bonne idée
le principe du dictionary c'est comme de tout dictionnaire de lier une clé à une définition
si vous avez plusieurs sockets (et donc plusieurs threads) vous aurez plusieurs instance de la classe en question, et vous serez surement amené à vous poser la question comment je retrouve la bonne dans la collection (car le dictionary est une collection)
exemple générique :
1 2 3 4 5
| dim _dico as new dictionary(of string, long)
_dico.add("un id",5)
_dico.add("un autre string",9)
_dico("un autre string") = 8 ' changement de 9 vers 8
_dico.remove("un id") |
et donc avec les bons types on peut faire
dico.add(monsocketactuel, maclasseQuiContientSocketEtThread)
ce qui fait qu'à un instant T quand vous recevez des octets du sockets vous pouvez écrire
1 2
| dim monInstanceDeClasse = dico(socketactuel)
monInstanceDeClasse.tellePorpriété = telleValeur |
après il est aussi possible de faire un classe plus complexe (dans la structure pas dans le code ni dans l'utilisation) qui s'occupe de démarrer le thread et de le gérer, et aussi de gérer tout le socket
ainsi vous aurez du code simple avec toutes les variables nécessaires sous la main
Partager