cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
21 avril 2005 à 15:31
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
22 avril 2005 à 12:42
Bonjour, petite question aux spécialistes desThreads.
J'ai fait, juste pour essayer, un server avec des clients qui s'y connecte. Le client qui se connecte envoie le nom d'un file au server, puis le serveur va transmettre le fichier au client de manière asynchrone...
Le problème c'est que le serveur écoute un port, et la méthode qui s'occupe de ça tourne dans un thread que j'ai démarré. Or, quand je quitter le server, je n'arrive pas à terminer ce thread proprement (dans le task manager, je vois un process qui tourne).
J'ai pourtant fait un _myThread.Abort(), mais rien n'y fait (si je fais _myThread.IsAlive juste après, je reçois toujours 'true)'.
Hum, je ne sais pas si tout est très clair. Si besoin est, je posterai un morceau de code...
Merci d'avance aux réponses!
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 21 avril 2005 à 16:20
Merci de la réponse (j'étais sur que ce serait toi qui répondrait )
Aucune exception n'est levée !
Je n'ai malheureusement pas le code sur le poste depuis lequel j'écris ce message, je posterai donc un morceau d'ici demain...
Ce que je sais, c'est que je ne fais pas de _myThread = null; mais je ne vois pas tellement à quoi ça servirait (à part éventuellement à indiquer au garbage collector qu'il peut faire son travail).
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 22 avril 2005 à 11:31
Alors voici un peu de code :
Sur le clique d'un bouton, je lance un nouveau Thread comme ceci (l'event click de ce bouton ne possède que ces deux lignes de codes) :
_t =
new Thread(
new ThreadStart(Start));
_t.Start();
Voici la méthode Start :
private
void Start()
{
AsynchNetworkFileServer app =
new AsynchNetworkFileServer();
app.WriteInfo +=
new NetworkFileServer.AsynchNetworkFileServer.WriteInfoEventHandler(app_WriteInfo);
app.TransfereEnded +=
new NetworkFileServer.AsynchNetworkFileServer.TransfereEndedEventHandler(app_TransfereEnded);
app.Run();
}
Et ensuite quand le transfère est fini, je fais dans l'event (TransfereEndedEventHandler)qui m'indique que c'est la fin :
_t.Abort();
//_t =
null;
Mais voila, le thread ne s'arrête pas.
Aucune erreur ne m'est retournée en plus, une idée ?
cs_Bidou
Messages postés5486Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 22 avril 2005 à 12:25
Ben comment faire autrement? Je dois écouter continuellement pour savoir si y'a un client qui se connecte (il peut y en avoir plusieurs!). Non ?
Et est-ce que c'est lié à mon problème de thread que je ne peux pas fermer?