Attente avant le revoit de paramaitre

bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 - 2 mars 2005 à 10:12
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005 - 3 mars 2005 à 10:26
Bonjour,

Je vous explique !

J'appel une class, à laquel je lui envoie une structure, puis ma classe doit me renvoyer la structure avec les modifs.. jusqu'ici rien de compliqué !

Vous pouvez voire sur cette page comment je fais pour le passage de ma structure:
http://www.csharpfr.com/forum.v2.aspx?ID=398812

Mon problème, c'est que dans ma classe, j'ai un temps d'environ 2-3 secondes avant que ma structure soit modifier.. donc quand je l'appel, elle me revoie après ma strucutre mais non modifier.. forcément car il s'est passé moins d'une seconde..
Comment je peux faire pour qu'elle m'envoit ma structure après 2-3 secondes sans me bloquer tout le systeme.. parce que si je fais un Tread.sleep ca marche.. mais ca bloque?

7 réponses

bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
2 mars 2005 à 13:41
J'ai trouvé !! bon j'emploie un peu une methode rustre mais ca marche !
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
2 mars 2005 à 14:08
Bonjour,

Peux tu mettre ta solution ca peut toujours intérresser du monde.

hum.......
0
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
2 mars 2005 à 14:24
oui STP met la solution

::|The S@ib|::
MVP C#.NET
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
3 mars 2005 à 08:37
Oui c'est vrais.. excusez moi !

Bon c'est un peu compliqué !

Dans mon programme principal j'appel ma class"1" ! ma class"1" appel une autre class"2" ! qui elle doit me retourner une strucutre.. mais celle-ci met un certain temps pour repondre.. et forcment la class"1" renvoie (avant) avec un return ma sructure qui n'a pas été modifié !
Alors pour celà j'ai enlevé ce return, et je l'ai remplacé par un event, alors dans ma class"1" je fais un thread..:

ThreadStruct = new Thread(new ThreadStart(WaitSendStruct));
ThreadStruct.Start();

et toujours dans la class"1"

private void WaitSendStruct()
{
Thread.Sleep(v_wait); //v_wait est calcule par rapport au temps que la class"2" va me retourner ma structure !
StructAxeXYMain(this.motor_struct_class); //Puis je la renvoie avec un event
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
3 mars 2005 à 08:59
Merci, mais au risque d'etre chiant peux tu mettre le codes de l'event aussi ?

hum.......
0
bip98 Messages postés 104 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 29 avril 2008 1
3 mars 2005 à 10:23
J'esèpre que ca sera utile pour quelqu'un !
Event à comme but de remplacer le return:

dans le prog principal:

Axe_move CallAxe_move; //Axe move étant ma class"1"

CallAxe_move = new Axe_move(motor_config); //Donc ici j'envoie ma structure
CallAxe_move.StructAxeXYMain+= new Axe_move.StructReturnMain(StructUpdate);
CallAxe_move.CallMotor();
TimerStructUpdate.Enabled=true; //J'avais oublié de vous dire.. pour récupéré l'info j'ai cré un timer pour mettre en attente le prog principal sans le bloquer ! donc ici je l'active.. pour controler quand le strucutre sera retunré par event.

private void StructUpdate(struct_motor motor_config)
{
this.motor_config=motor_config; //Pour la mettre à jour.. toujours dans le code principal.
}

dans la class"1"
public class Axe_move
{
public delegate void StructReturnMain(Test_moteur.f_moteur.struct_motor structure_config);
public event StructReturnMain StructAxeXYMain;
private Test_moteur.f_moteur.struct_motor motor_struct_class;
public Axe_move(Test_moteur.f_moteur.struct_motor structure_config)
{
this.motor_struct_class=structure_config;
}
public void CallMotor()
{
ThreadStruct = new Thread(new ThreadStart(WaitSendStruct));
ThreadStruct.Start();
}
}
private void WaitSendStruct()
{
Thread.Sleep(1300);
StructAxeXYMain(this.motor_struct_class);
}
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
3 mars 2005 à 10:26
Merci

hum.......
0
Rejoignez-nous