Threading qui ne passe qu'une fois
Bonjour a tous,
J'ai un petit soucis alors que je me fais des classes de gestion serveur/client,
Je crée mon serveur puis je lance le thread sensé recevoir mais il ne passe qu'une seule fois.
Pour ca j'ai fait une méthode avec un délégué pour manipuler mes données plus facilement :
Code:
1 2 3 4 5 6 7
| public void LaunchThread( ReceiveDelegateAction receiveAction )
{
ReceiveAction = receiveAction;
Thread = new Thread( new ThreadStart( ReceiveActionLauncher ) );
Thread.Start();
_ThreadStarted = true;
} |
Mes attributs importants et mon délégué sont définis comme cela :
Code:
1 2 3 4 5 6 7 8
|
protected Socket Socket;
protected Thread Thread;
protected ReceiveDelegateAction ReceiveAction;
public delegate void ReceiveDelegateAction( object data ); |
Et enfin la méthode ReceiveActionLauncher ce qui est threadée :
Code:
1 2 3 4 5 6 7 8
|
private void ReceiveActionLauncher()
{
string data = Receive();
Console.WriteLine( "ReceiveActionLauncher : " + data );
ReceiveAction( data );
Thread.Sleep( 50 );
} |
Enfin la méthode Receive() lit les données :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public string Receive()
{
string data = "";
if ( !Socket.Connected )
return data;
int size = 0;
while ( ( size = Socket.Receive( Buffer ) ) != 0 )
{
data += Buffer[size];
}
Console.WriteLine( "Receive : " + data );
return data;
} |
Et je n'ai qu'un seul passage dans ReceiveActionLauncher.
Si on me demande pourquoi je fais ca, c'est pour pouvoir faire des myTextBox.Text = data; hors de ma classe sensée être le plus générique possible pour la réutiliser ailleur :p
Et mes connexions sont bonnes car quand je lace mon client, la connexion est acceptée.
Je ne sais pas trop d'où ca peut venir.
Merci de votre aide.