IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment tuer un thread? [Débutant]


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 25
    Points
    25
    Par défaut Comment tuer un thread?
    Bonjour,
    tout est dit dans le titre. Je suis en train d'implémenter 2 petites applis client/serveur. Pour l'instant, je me contente de faire un truc simplissime pour apprendre les rouages (un tchat on ne peut plus basique).
    Tout fonctionne bien sauf que j'ai des messages d'erreurs violents à la fermeture des applis.
    J'aimerais donc savoir comment faire pour tuer un thread que j'ai construit? Voici des extraits de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    [...]
            public Form1()
            {
                InitializeComponent();
                threadAttenteConnexion = new Thread(new ThreadStart(AttenteConnexion));
     
                // Set the TcpListener on port 13000.
                Int32 port = 1337;
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");
     
                // TcpListener server = new TcpListener(port);
                server = new TcpListener(localAddr, port);
     
                // Start listening for client requests.
                server.Start();
                threadAttenteConnexion.Start();
            }
     
            public void AttenteConnexion()
            {
                TcpClient tc = server.AcceptTcpClient();
                this.Invoke(this.GestionConnexionDelegate, new object[] { tc });
                server.Stop();
            }
    [...]
     
     
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                threadAttenteConnexion.Join();
            }
    Lorsque je lance simplement cette appli (en debug) et que je la ferme aussitôt, le thread threadAttenteConnexion continue et je dois faire un violent "arrêter le deboggage" pour le tuer enfin.
    Je me doute que le thread est bloqué sur "TcpClient tc = server.AcceptTcpClient();", mais est ce qu'on ne peut pas le tuer quand même proprement?
    Est ce que quelqu'un peut me dire ce que j'ai oublié de faire? (ou mal fait?).
    J'ai tenté également threadAttenteConnexion.Abord() mais sans plus de succès...

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Si tu veux que le thread soit tuer à la fermeture de l'application, tu peux le mettre en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monthread.IsBackground = true
    http://msdn.microsoft.com/fr-fr/libr...ackground.aspx

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 36
    Points : 25
    Points
    25
    Par défaut
    Parfait!

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment tuer un thread
    Par ikuzar dans le forum Débuter
    Réponses: 3
    Dernier message: 18/08/2009, 16h18
  2. [D6] Comment tuer un Thread ?
    Par Lung dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2006, 11h42
  3. Comment tuer une frame
    Par tymous dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 28/07/2004, 11h53
  4. Comment tuer le processus ez-ipupdate
    Par berry dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 21/06/2004, 15h07
  5. comment stoper 1 thread d'arrière-plan
    Par ms91fr dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2003, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo