zaki Posté(e) le 22 avril 2009 Share Posté(e) le 22 avril 2009 salut les amis, je dois faire passer des paramètres a un thread (en c#) , mais je ne sais pas comment , j'ai essayer avec parametrizedThreadStart en suivant qlq exemples sur le net mais ca n'a pas marcher voila un peut le code public void receiver(Socket sc) [color="Black"]{ ... } private void button1_Click(object sender, EventArgs e) { ... Socket client = main_sock.accept(); [color="Red"]Thread t = new Thread(new ParameterizedThreadStart(receiver));[/color] t.Start(client); .... }[/color] aider moi SVP merci d'avance ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mouradski Posté(e) le 23 avril 2009 Share Posté(e) le 23 avril 2009 Salem, Si t'es encore entrain de développer ton application de chat avec les sockets, je crois que je t'ai déjà répondu ICI concernant les AsyncCallBack et le multi-threading implicite, resté sans réponse. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Darkvader Posté(e) le 23 avril 2009 Share Posté(e) le 23 avril 2009 (modifié) salut les amis, je dois faire passer des paramètres a un thread (en c#) , mais je ne sais pas comment , j'ai essayer avec parametrizedThreadStart en suivant qlq exemples sur le net mais ca n'a pas marcher voila un peut le code public void receiver(Socket sc) [color=Black]{ ... } private void button1_Click(object sender, EventArgs e) { ... Socket client = main_sock.accept(); [color=Red]Thread t = new Thread(new ParameterizedThreadStart(receiver));[/color] t.Start(client); .... }[/color] aider moi SVP merci d'avance ! Your code above won't work because ParameterizedThreadStart takes only delegates with object parameters. Also you don't need the ParameterizedThreadStart any more, the Thread itself takes delegates. Correct code public void receiver([color=Red]object[/color] sc) [color=Black]{ [color=Red] Socket c = sc as Socket; if(c != null)[/color] { //do some work } }[/color] [color=Black]private void button1_Click(object sender, EventArgs e) { ... Socket client = main_sock.accept(); [color=Red]Thread t = new Thread(receiver);[/color] t.Start(client); .... }[/color] Try it and let us know. Modifié le 23 avril 2009 par Darkvader Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
onizo Posté(e) le 23 avril 2009 Share Posté(e) le 23 avril 2009 Voila mon projet d'IM opensource fait en VB.NET 1.1 http://code.google.com/p/devilmessenger/ @+ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mouradski Posté(e) le 23 avril 2009 Share Posté(e) le 23 avril 2009 (modifié) mais je continue à dire que le meilleur moyen de faire ton IM est d'utiliser les AsyncCallBack Ok je sorts. Modifié le 23 avril 2009 par mouradski Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zaki Posté(e) le 23 avril 2009 Auteur Share Posté(e) le 23 avril 2009 (modifié) Salem, Si t'es encore entrain de développer ton application de chat avec les sockets, je crois que je t'ai déjà répondu ICI concernant les AsyncCallBack et le multi-threading implicite, resté sans réponse. mais je continue à dire que le meilleur moyen de faire ton IM est d'utiliser les AsyncCallBack Ok je sorts. merci bcp mourad khouya , mais j'hésite encore pour utiliser AsyncCallBack Try it and let us know. ca tres bien fonctionnée, Thx a lot !! Voila mon projet d'IM opensource fait en VB.NET 1.1 http://code.google.com/p/devilmessenger/ @+ merci bcp pour le code frere !! Modifié le 23 avril 2009 par zaki Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zaki Posté(e) le 17 mai 2009 Auteur Share Posté(e) le 17 mai 2009 bonjour, concernant mon application toujours (messagerie instantanée) , je dois ajouter une fonctionnalité pour le partage de fichiers,c-a-d: les clients connectés au serveur de messagerie ont la possibilité de mettre et télécharger des fichiers qui se trouve dans un dossier partagé dans le serveur . mais franchement je ne sais pas quoi utiliser et d'où commencer, est ce que je dois utiliser le transfert via les sockets, installer un serveur ftp dans le poste serveur...etc , Aider moi svp; merci d'avance ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mouradski Posté(e) le 17 mai 2009 Share Posté(e) le 17 mai 2009 Salem, Je crois que ces deux liens répondront à tes questions : Commande FTP avec C# Suite Sinon si tu comptes faire un un transfert de fichier simple de client à client ou via le serveur je crois que le mieux serait de définir ton propre petit protocole t'as largement de quoi faire. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
zaki Posté(e) le 20 mai 2009 Auteur Share Posté(e) le 20 mai 2009 Salem, Je crois que ces deux liens répondront à tes questions : Commande FTP avec C# Suite Sinon si tu comptes faire un un transfert de fichier simple de client à client ou via le serveur je crois que le mieux serait de définir ton propre petit protocole t'as largement de quoi faire. merci bcp khouya Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
mouradski Posté(e) le 20 mai 2009 Share Posté(e) le 20 mai 2009 de rien l'ami Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nemesis Posté(e) le 5 juin 2009 Share Posté(e) le 5 juin 2009 Socket client = main_sock.accept(); Thread t = new Thread(receiver); devient Socket client = main_sock.accept(); Thread t = new Thread(delegate () { receiver ( client ) ; }); sinon pourquoi ne pas utiliser les nouveautés du framework, pour faire un chat avec WCF sa prend 5 minute, en plus tu peux changer de protocole en 10 seconde (en changeant juste un mot dans la configuration genre tcp devient http). Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Darkvader Posté(e) le 6 juin 2009 Share Posté(e) le 6 juin 2009 (modifié) Socket client = main_sock.accept(); Thread t = new Thread(delegate () { receiver ( client ) ; }); Both solutions are right but your code won't work because that delegate needs to match ThreadStart which takes a parameter. so your code needs to be as follows: Socket client = main_sock.accept(); Thread t = new Thread(delegate (object sock) { receiver ( client ) ; }); Modifié le 6 juin 2009 par Darkvader Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
nemesis Posté(e) le 6 juin 2009 Share Posté(e) le 6 juin 2009 eux non!! 19.2.1. Passing Data to a Thread Let's say we want to pass an argument to the method on which a thread starts. To make this possible, Thread's constructor is overloaded to accept either of two delegates: public delegate void ThreadStart( ); public delegate void ParameterizedThreadStart (object obj); The limitation of ParameterizedThreadStart is that it accepts only one argument. And because it's of type object, it usually needs to be cast. An alternative is to use the parameterless ThreadStart in conjunction with an anonymous method as follows: static void Main( ) { Thread t = new Thread (delegate( ) { Print ("Hello from t!"); }); t.Start( ); } static void Print (string message) { Console.WriteLine (message); } The advantage is that the target method (in this case, Print) can accept any number of arguments, and no casting is required. Cf C# 3.0 in a Nutshell Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Darkvader Posté(e) le 6 juin 2009 Share Posté(e) le 6 juin 2009 (modifié) eux non!! static void Main( ) { Thread t = new Thread (delegate( ) { Print ("Hello from t!"); }); t.Start( ); } static void Print (string message) { Console.WriteLine (message); } Cf C# 3.0 in a Nutshell I agree, this one should work, only when you do t.Start(), but in case of Zaki's code which is t.Start(client), your code will throw an exception because it needs a matching parameter. Modifié le 6 juin 2009 par Darkvader Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.