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

Framework .NET Discussion :

Suite Thread Simultanés: instances de classe differentes?


Sujet :

Framework .NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Suite Thread Simultanés: instances de classe differentes?
    Bonjour a tous,

    dans le post limité a 5 thread simultanés
    http://www.developpez.net/forums/viewtopic.php?t=435990
    je limite a 5 le nbr de threads simultanés qui exécute la méthode Run()
    de la class Runner.

    je voudrais pouvoir utilisé maintenant la class TreadClasse qui gère les
    limites de threads comme une sorte de class générique dédié a ce genre
    de tache, mais qui pourrais instantié pour chaque thread une classe
    différente que la classe Runner.

    un peu comme ceci:
    ou classe designe la classe à utiliser, soit Runner ou AutreClass

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // constructeur de la classe TreadClasse
     
    public TreadClasse(string [] strArray, classe maclasse) 
          { 
             strArrayIP = strArray;
             this.uneClasse = maclasse;
          }
    et ensuite pour la methode Depart()
    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
     
    public void Depart() 
      { 
        int compteur = 0; 
     
        foreach(string strIP in strArrayIP) 
        { 
          if(ThreadLimite > 3) 
          { 
            EventAuto.WaitOne(-1, false); 
            if(ThreadLimite >0)Interlocked.Decrement(ref ThreadLimite); 
          } 
          // a la place de Runner -> uneClasse
          // Runner r  = new Runner(compteur, strIP); 
          uneClasse r  = new uneClasse(compteur, strIP); 
     
          r.eveFin += new EventFin(SetFin); 
          th        = new Thread(new ThreadStart(r.Run)); 
          th.Name   = "thread - " + compteur.ToString(); 
          r.ThreadCurrent = th; 
          // Merci abelman ;) 
          threadsList.Add(th); 
          th.Start(); 
          Interlocked.Increment(ref ThreadLimite); 
          compteur++; 
        } 
        Console.Write("Fin du traitement\n"); 
      } 
     
      //.......
     
      public class Runner:ImonInterface
      {
      //......
      public Run()//.....
      }
     
      public class AutreClass:ImonInterface
      {
      //.......
      public Run()//.....
      }
    Pour la méthode Run une interface me semble faire l'affaire
    mais la ou je coince est pour le passage en argument au
    constructeur TreadClasse la classe que je veux utilisé dans chaque
    thread

    Voila j'espère avoir été assez clair et j'attend vos Avis Avisés
    avec impatience.

    macgile

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Les generics sont faits pour ce genre de cas : une classe de base adaptée à plusieurs types.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public TreadClasse(string [] strArray, classe maclasse) <T> where T:IMonInterface
    Ensuite pour l'utiliser, ca devient simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TreadClasse<Runner> read1 = new TreadClasse<Runner>;
    TreadClasse<AutreClasse> read2 = new TreadClasse<AutreClasse>;
    On ne peut pas faire boire un âne qui n'a pas soif.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Février 2004
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Merci NicolasG C’est exactement ce qu'il me fallait.
    Décidément sur ce forum ont à toute la réponse à nos questions

    Macgile

    PS: Heu autant pour moi Morpheus Pour le prochain post
    J’essayerais de respecter les règles.

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    La prochaine fois, pense au tag Résolu

    A+


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/06/2012, 18h48
  2. [POO] Passage d'une instance de classe à un thread
    Par jesus144 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2008, 12h19
  3. plusieurs instance de classe avec thread
    Par lucky dans le forum MFC
    Réponses: 2
    Dernier message: 14/09/2006, 11h30
  4. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16
  5. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15

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