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 :

[C#] Comment faire pour faire de suicider un thread ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut [C#] Comment faire pour faire de suicider un thread ?
    Bonjour,

    Dans mon programme, j'ai une classe Main qui lance plusieurs threads.
    J'ai une classe ComportementThread qui gère le comportement des threads que je lance.

    Ici le comportement de mes threads est juste d'écrire, les paramètres que je leur passe dans une console.
    J'aimerais pouvoir faire que mes threads se suicident directement de l'intérieur (dans la classe ComportementThread).

    Je sais que je peux tuer les threads dans ma classe main avec la méthode Abort(), mais ce n'est pas ça que je veux.

    J'ai essayé un Environnement.Exit(0), mais ça arrête tout.

    Pour infos voici mes classes :

    ComportementThread :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
     
    namespace ExSCHAPEL
    {
        class ComportementThread
        {
            private string id;
            private string commande;
     
            // Constructeur
            public ComportementThread(string a, string b)
            {
                this.id = a;
                this.commande = b;
            }
     
            // Setters
            public void SetID(string s)
            {
                this.id = s;
            }
     
            public void SetCommande(string s)
            {
                this.commande = s;
            }
     
            // Getters
            public string GetID()
            {
                return this.id;
            }
     
            public string GetCommande()
            {
                return this.commande;
            }
     
            // Comportement du thread
            public void ThreadLoop()
            {
                while (Thread.CurrentThread.IsAlive)
                {
                    Console.WriteLine(this.id + " " + this.commande);
                    Thread.Sleep(250);
     
                }
     
            }
     
     
     
        }
    }
    Main :
    Juste comment j'appelle mon thread..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ComportementThread comport = new ComportementThread("bonjour", "au revoir");
    Thread T = new Thread(new ThreadStart(comport.ThreadLoop));
    T.Start();
    Avez vous une idée ?
    Merci de votre aide.

  2. #2
    Membre expérimenté

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Par défaut
    - Introduit une propriété "bool Continue = true;" dans ta classe ComportementThread.
    - Re-écrit ThreadLoop() pour faire while(Continue) { ... }
    - Pour terminer le thread, fait: comport.Continue = false;

  3. #3
    Membre éclairé Avatar de Johann7751
    Profil pro
    Analyste Programmeur Junior
    Inscrit en
    Février 2009
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur Junior

    Informations forums :
    Inscription : Février 2009
    Messages : 234
    Par défaut
    Merci.
    Ca fonctionne.

    Par contre, il faut juste faire :
    dans ma methode "ThreadLoop" pour arrêter le thread.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 10/06/2010, 16h06
  2. Comment puis je faire pour que'une page soir rechargees....
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/12/2005, 10h46
  3. [VBA][Excel] Comment faire pour faire une boucle?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 29
    Dernier message: 19/12/2005, 14h48
  4. Réponses: 4
    Dernier message: 09/12/2005, 15h48
  5. Comment faire pour faire glisser un objet dans une form ?
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2005, 17h49

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