C# > Thread + Socket : Passage par parametre, je galere !

C# > Thread + Socket : Passage par parametre, je galere ! - C#/.NET managed - Programmation

Marsh Posté le 03-09-2007 à 18:11:58    

Bonjour,
 
J'ai un proxy qui tourne bien en C++. Je debute le C#, et pour commencer, je voulais "migrer" ce proxy du C++ vers le C#.
 
Bon, sans rentré dans les details, j'ai mon main, dedans je crée une socket, puis juste apres, pour chaque accept, je crée un thread (classique quoi !)
Dans le thread, je reutilise ma socket. En c++, c'etait simple, je passait la socket en parametre, comme ceci :

Code :
  1. DWORD WINAPI proxy (LPVOID psocket)
  2. {
  3. [...]
  4. //Recuperation de la valeur du socket (par pointeur)
  5. SOCKET * ps = (SOCKET *)psocket;
  6. SOCKET socket_client = *ps;
  7. [...]
  8. }


 
En C#, c'est apparament moins simple d'utiliser les passages par parametre avec les socket. J'ai utilisé une methode trouvé sur le net :
Je crée ma fonction proxy dans une autre classe :

Code :
  1. public class MyProxyHandle
  2.     {
  3.         public Socket socket_client;
  4.         // Constructeur
  5.         public MyProxyHandle(Socket socket_client)
  6.         {
  7.             this.socket_client = socket_client;
  8.         }
  9.         // Méthode de modification du paramètre
  10.         public void SetParam(Socket param)
  11.         {
  12.             this.socket_client = param;
  13.         }
  14.         //fonction trhead
  15.         public static void Proxy()
  16.         {
  17.   //[ici je veut utiliser socket_client, mais je n'y arrive pas !]
  18.  }
  19. }


L'appel de mon thread se fait ainsi :

Code :
  1. MyProxyHandle ProxyHandle = new MyProxyHandle(socket_client);
  2. Thread T = new Thread(new ThreadStart(MyProxyHandle.Proxy));
  3. T.Start();


 
Ai-je fais une erreur ? Où ? Comment faire ?
Pff, le passage du C++ au C# est plus compliqué qu'il me semblait !
 
Merci :hello:


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Marsh Posté le 03-09-2007 à 18:11:58   

Reply

Marsh Posté le 04-09-2007 à 08:43:04    

UP ! Un peu d'aide svp :/


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Marsh Posté le 12-09-2007 à 19:21:48    

il y a deux manières pour passer un paramètre.
 
1) c'est une classe, et ta socket une variable, crée une propriété sur ta classe qui te permet d'assigner une socket. et avant le lancement du thread, tu crée l'instance et tu l'initialise
 
2) si je me souviens bien, il y a une autre classe que ThreadStart qui elle permet de passer des paramètres au lancement du Thread. me demande si c'est pas un truc comme ParametrizedThreadStart. Faut chercher dans la doc.

Reply

Marsh Posté le 22-09-2007 à 15:35:14    

Je suis en retard, parce qu'avec le boulot je ne suit plus vraiment le forum, mais j'ai utilsé un treadpool, avec lequel on peut passer un object en parametre, donc c'est reglé depuis un moment deja ;)


---------------
Il faut arreter l'informatique le jour où l'on trouve 1024g dans 1kg
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed