Multi threading en while(true) sur un objet

Résolu
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007 - 7 juin 2005 à 12:00
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007 - 7 juin 2005 à 16:17
Salut,

J'ai un petit problème.
J'ai deux taches à faire en même temps, des taches d'écoute en boucle infinie while(true).
J'ai donc décidé d'en faire chacune un thread.
Par contre j'aimerais transmettre un objet à ces threads (le même qui viendrait de la classe principale) pour qu'il le modifie (un thread modifie une variable et l'autre en modifie 3).
Par contre je sais pas du tout comment les faire tous travailler sur la meme instanciation de classe :/

Si quelqu'un avait une solution ca arracherait pas mal.

Merci d'avance !

4 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
7 juin 2005 à 12:24
déjà, passe ton objet par référence (ref) et non pas pas valeur.

de plus dans la classe dont ton objet est une instance à chaque fois que tu travailles sur une variable, objet... fait un lock dessus.

Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
</FO< body>
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 juin 2005 à 13:09
Avec le mot clé ref (dans la définition de la méthode, et dans l'appelle).

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
3
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
7 juin 2005 à 12:34
Hum.. Et comment je lui passe l'objet par reference ? :/
0
cs_Sobieski Messages postés 54 Date d'inscription mardi 22 mars 2005 Statut Membre Dernière intervention 13 mars 2007
7 juin 2005 à 16:17
Un truc que je pige pas. Si j'ai bien compris comment on passe un argument à un thread pour moi je ferais ca :

public class Thread1
{
private Joueur _j;

public Thread1(ref Joueur j)
{
_j=j;
}
public void Methode()
{
//code qui modifie _j
}
}

et ensuite dans un main :
Thread1 t = new Thread1(ref j);
et ensuite lancement du thread avec la méthode ?

Si je lui passe l'objet par ref quand je fais _j=j ca vire la réference non ? Si plus tard dans le temps j'interroge un attribut de j il sera modifié par la méthode du thread ?
0
Rejoignez-nous