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 :

Multithreading


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut Multithreading
    Bonjour,

    j'ai une boucle while et le comportement que j'aierais en fait c'est que lorsque je clique sur le bouton "RUN" ma boucle se lance (la pas de problème) mais je voudrais que quand on clique sur "STOP" ma boucle s'arrête...

    quelle méthode ou object définir das mon while ?

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    tu boucle sur la valeur d'un booleen et avec ton bouton tu changes la valeur du booléen.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    tu peux essayer de definir une variable que ta boucle testera à chaque iteration (et au besoin sortira). Je te propose ca :

    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
            private void btnRun_Click(object sender, EventArgs e)
            {
                m_continue = true;
                ThreadPool.QueueUserWorkItem(new WaitCallback(Traitement));
            }
     
            private void Traitement(object state)
            {
                label1.Invoke(new MethodInvoker(delegate { label1.Text = "Running"; }));
     
                while (true)
                {
                    //traitement
                    Thread.Sleep(500);
                    if (!m_continue)
                        break;
                }
     
                label1.Invoke(new MethodInvoker(delegate { label1.Text = "Stopped"; }));
     
            }
     
            private void btnStop_Click(object sender, EventArgs e)
            {
                m_continue = false;
            }
    C'est pas tres propre, mais ca fait le job. =)

    edit : grillé

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut Arret de Boucle sur un bouton + THREAD
    Cela tombe bien que tu utilise un tread car c'est justement de quoi j'ai besoin... je fais un test de lien HTTP dans mon traitement mais le hic c'est que je dois faire 500 tests !!!

    pour accélérer le processus, estce que je peux lancer un thread avec comme paramètre l'adresse à tester ?

    et pendant que le test s'effectue, j'en lance d'autres ...

  5. #5
    Nip
    Nip est déconnecté
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    963
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 963
    Par défaut
    Jette un oeil de ce cote: http://www.codeproject.com/csharp/Si...select=2178617 Ca repondra a tes questions

  6. #6
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 241
    Par défaut
    j'aime po l'anglais lol, mais jvais m'en debrouiller merci beaucoup ca a l'air d'être ça !

    mais il reste une petite choze au niveau des thread que je n'arive pas à comprendre ... Comment lancer plusieurs thread avec des paramètres différents.. par exemple: je lance un thread avec une adresse IP, puis le temps que le thread fasse le traitement, j'en lance un second, etc...

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    soit tu créé une classe de thread dédiés personnelle où chaque instance représente un thread auquel tu peux assigner une valeur de "départ"...
    j'ai d"ailleurs déjà évoqué cette méthode dans le forum...

    ou tu lis ma réponse à un autre post que tu as deja demandé qui consiste à créer une filte de valeur et chacun de tes threads va dépiler une valeur sur cette liste "commune"... la valeur dépilée est l'adresse à traiter.
    Temps que tu n'oublie pas les synchroniser lors de l'accès à cette liste en méttant l'accès à cette list dans un bloc lock(){} ca ne pose aucun probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    string host = null;
    lock(s_Locker) host = s_Liste.Pop();
    ...
    /* ici host vaut la valeur à tester... tu vérifie si c'est null, si c'est null ou que tu as eu une exception c'est qu'il n'y a plus rien à traiter.
     */

Discussions similaires

  1. [Kylix] Multithreads la galère
    Par Oyoboy dans le forum EDI
    Réponses: 16
    Dernier message: 16/07/2004, 11h03
  2. [WinAPI C++] MultiThreading et PostMessage
    Par Gruik dans le forum Windows
    Réponses: 7
    Dernier message: 29/03/2004, 15h58
  3. [WinAPI C++] MultiThreading?
    Par Gruik dans le forum Windows
    Réponses: 2
    Dernier message: 25/03/2004, 00h08
  4. [Win32]App multithread
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 25/09/2003, 09h57
  5. Multithreading sous HP Ux 11
    Par pykoon dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 18/10/2002, 23h36

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