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
et ensuite pour la methode Depart()
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; }
Pour la méthode Run une interface me semble faire l'affaire
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()//..... }
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
Partager