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#] : Tester la fin d'un thread


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 175
    Par défaut [C#] : Tester la fin d'un thread
    Bonjour,

    Mon application doit lancer des traitements parallèles. Elle réalise donc une boucle qui lance à chaque tour la méthode "AddWork". Celle-ci doit lance un thread dans lequel le traitement est réalisé.
    Lorsqu'un des traitements parallèles est terminé, un nouveau doit être lancé. J'ai donc besoin de tester le moment auquel le thread lancé se termine.
    J'ai utilisé le code suivant. Il fonctionne mais je ne sais pas si c'est la meilleure solution. Qu'en pensez-vous ?

    Je ne sais pas trop quel nom donner à mes méthodes.

    La méthode "toto" permet de lancer le thread contenant le traitement à réaliser
    La méthode "tata" appelle la méthode "toto" pour lancer le traitement et teste le moment auquel il se termine

    Merci et bonne journée

    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
                public void AddWork(object work)
                {
                    Thread toto = new Thread(new ThreadStart(this.tata));
                    toto.Start();
                }
     
                public void tata()
                {
                    Proto oProto = new Proto(this.toto);
     
                    IAsyncResult iAr;
                    iAr = oProto.BeginInvoke(null, null);
                    while (!iAr.AsyncWaitHandle.WaitOne(100, false))
                    {
                        //Console.WriteLine("Et alors ?"); 
                    }
                    Console.WriteLine("Terminé"); 
                }
     
                public void toto()
                {
                    this.thread = new Thread(new ThreadStart(work.ProceedWork));
                    this.thread.Start();
                    this.thread.Join();
                }

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 85
    Par défaut
    Une manière de résoudre ton cas est l'utilisation de l'objet BackgroundWorker.
    Même s'il est plutôt destiné à une application graphique nécessitant un calcul risquant de geler l'interface, il contient une méthode RunWorkerCompleted qui t'avertit lorsque le thread a terminé son travail.

    Plus d'infos: http://glarde.developpez.com/dotnet/bgworker/cs/

  3. #3
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Bonsoir,

    il me semble que ta solution est pas mal.
    Tu peux utiliser les évenements avec AutoResetEvent et ManualResetEvent.

    Bye.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/11/2006, 14h28
  2. [thread]attendre la fin d'un thread?....
    Par babarpapa dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 29/03/2006, 14h31
  3. [C#] Fin d'un Thread
    Par maitrebn dans le forum C#
    Réponses: 2
    Dernier message: 18/11/2005, 10h56
  4. [Thread] comment attendre la fin d'un thread?
    Par billynirvana dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 24/08/2005, 10h43
  5. [MFC]Détection de la fin d'un thread
    Par Oberown dans le forum MFC
    Réponses: 17
    Dernier message: 25/08/2004, 11h51

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