Jump to content
zaki

passer des parametres a un thread C#

Recommended Posts

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 !

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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.

Edited by Darkvader

Share this post


Link to post
Share on other sites

:D mais je continue à dire que le meilleur moyen de faire ton IM est d'utiliser les AsyncCallBack :)

 

Ok je sorts.

Edited by mouradski

Share this post


Link to post
Share on other sites
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 !!

Edited by zaki

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

 

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 ) ; });

Edited by Darkvader

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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.

Edited by Darkvader

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Posts

    • Je n'avais aucune idée de cette information.
    • merci les amis, la marque dlink est décidément à fuir...
    • . Mohamed, Muhammad ou Mohammed est le dernier des prophètes et le messager de Dieu à l'humanité avec la dernière des religions monothéistes, l'Islam. Son plus grand miracle est le Coran, le livre saint de la religion musulmane. Et c'est d'après les actes et paroles du prophète (SWS) que les musulmans tiennent la Sunna Nabawiya.   Naissance et enfance   Mohamed naquit le 12 Rabi' al-awwal de l'an dit de l'éléphant ('Am Al Fil), qui correspond à l'an 571 à peu près du calendrier grégorien, à la Mecque. (C'est cette date qui est commémorée pendant le Mawlid Annabaoui).   Son père Abdullah Bnou 'Abd al-Muttalib faisait partie de Banou Hachim l'une des tribus de Quraych, il épousa Amina Bint Wahab et mourut jeune avant même qu'elle ne donne naissance au prophète. A sa naissance, Mohammed fut confié à Halima Saadia qui lui servit de nourrice comme l'était la coutume en Arabie de confier les nouveaux nés aux nourrices des villages avoisinants. Sa mère mourut alors qu'il avait à peine 6 ans, il fut alors confié à son grand père 'Abd al-Muttalib et à la mort de ce dernier à son oncle Abou Talib. Jeunesse   L'oncle de Mohamed (SWS) était pauvre, il dut alors travailler dès sa jeunesse pour l'aider à subvenir aux besoins de la famille, il fut d'abord berger avant de travailler dans le commerce. Dès sa jeunesse, Mohamed (SWS) fut connu auprès de la tribu de Quraych par sa grande sincérité, ils le surnommaient "Al Amine" (celui à qui l'on peut faire confiance).   Khadija, une riche dame de Quraych, lui confia ses caravanes de commerce pour qu'il lui gère ses affaires, elle fut impressionnée par son honnêteté et son intégrité, et ce fut elle qui lui proposa de l'épouser. Mohammed avait alors 25 ans, alors qu'elle en avait 40. Leur mariage dura 25 ans jusqu'à la mort de Khadija, le prophète n'épousa guère d'autre femme jusqu'à la mort de cette dernière. Khadija fut non seulement la première femme mais aussi la première personne à se convertir à l'Islam. Période de la da'wa   Le prophète Mohamed avait pour habitude d'aller se recueillir dans une grotte appelée Ghar Hiraa non loin de la Mecque. C'est là qu'un jour qu'il avait 40 ans, l'ange Jibril (Gabriel) lui rendit visite avec le message de Dieu. Les premiers versets du Coran qui furent dévoilés au prophète furent ceux de Sourate Al-Alaq: "Lis au nom de ton Seigneur qui a tout créé, qui a créé l’homme d’une adhérence ! Lis, car la bonté de ton Seigneur est infinie ! C’est Lui qui a fait de la plume un moyen du savoir et qui a enseigné à l’homme ce qu’il ignorait."   La révélation du Coran (parole d’Allah) au prophète par l'intermédiaire de Jibril dura 23 ans.           Mohammed était très religieux et pendant longtemps, il détesta la décadence et l'idolâtrie de la société dans laquelle il vivait.         À l'âge de quarante ans, Mohammed reçut sa première révélation de Dieu par l'intermédiaire de l'ange Gabriel.  Les révélations se poursuivirent pendant vingt-trois ans, et ensemble elles formèrent ce que nous connaissons comme le Coran.   Dès qu'il commença à réciter le Coran et à prêcher la vérité que Dieu lui avait révélée, il souffrit, avec son petit groupe de disciples, de persécutions de la part des mécréants.  Les persécutions devinrent si acharnées qu'en l'an 622, Dieu leur ordonna d'émigrer.  Cette émigration de la Mecque à la ville de Médine, située à environ 260 milles (418 km) au nord, marque le début du calendrier musulman.   Après plusieurs années, Mohammed et ses disciples purent enfin retourner à la Mecque, où ils pardonnèrent à leurs ennemis.  Avant que Mohammed ne meure, à l'âge de soixante-trois ans, la majeure partie de la Péninsule Arabe était devenue musulmane, et moins d'un siècle après sa mort, l'islam s'était propagé jusqu'en Espagne à l'ouest, et aussi loin qu'en Chine à l'est.  Parmi les raisons qui expliquent la propagation rapide et pacifique de l'islam, il y a la vérité et la clarté de sa doctrine.  L'islam appelle les gens à ne croire qu'en un seul Dieu, qui est le Seul qui mérite d'être adoré.   Le prophète Mohammed était un parfait exemple d'un homme honnête, juste, clément, compatissant, véridique et brave.  Bien qu'il fût un homme, il était très loin d'en avoir les mauvaises caractéristiques, et il luttait et faisait tous ses efforts par amour pour Dieu et pour Sa récompense dans l'au-delà.  De plus, dans toutes ses actions et ses relations avec les gens, il avait toujours la crainte de Dieu et le souci de Lui plaire   Rachid Eljay : Fêter la Naissance du Prophète, Paix et Bénédictions sur lui (Mawlid) https://www.youtube.com/watch?v=gTgjvQEjry0&feature=emb_title     L'Eglise vous cache que le Prophète Mohamed est cité dans la Bible ! prophet Mohamed in Bible.flv   https://www.youtube.com/watch?v=ZyQtra3WzIU
    • non, il faut un routeur tout court et encore certains modeles precis uniquement
×
×
  • Create New...