Bonjour,
J'ai un gros bug dont je n'arrive pas à déterminer la source.
C'est très simple, il s'agit d'une application serveur (en mode console).
J'ai deux Thread, un pour l'écoute sur un socket et l'autre pour vérifier la connection entre le client et le serveur.
Le seul moyen d'arrêter le thread d'écoute et d'appelé la méthodes Abort().
Pour la connection, il suffit de faire un while(unBool){//vérif connection}
Dans le thread principal, lors de l'arrêt du serveur, je met unBool à false et fait Abort sur le thread d'écoute.
les deux thread s'arrête. Jusqu'à là, pas de problème mais après avoir fait cela, je demande la fermeture du socket utilisé.
Gros problème! Après avoir fait un Abort sur le thread d'écoute, la fonction s'arrête!
Un petit topo pour mieux comprendre le bug:
1 public void StopServer()
2 {
3 UnBool = false;
4 ThreadEcoute.Abort();
5 monSocket.Close();
6 }
là en gros les lignes 1,2,3,4 s'éxecute, le thread d'écoute gère l'exception ThreadAbortException et la fonction StopServer() s'arrête là. monSocket.Close() n'est pas exécuter ainsi que tout code se situant derrière ThreadEcoute.Abort();
Quelqu'un saurait-il pourquoi?
Partager