Disons que je veux valider un million de chaînes de caractères et que chaque validation prend quelques secondes.
Mon approche :
J'ai un tableau de fils déclaré comme ceci :
Thread[] workers = new Thread[50];
Je n'ai pas toutes les chaînes de caractères dans un tableau, elles sont obtenues par des calculs, puis je ne les ai pas toutes lorsque je lance le processus, mais j'ai une méthode qui renvoie la suivante :
public string next()
{
//my code
}
J'ai été capable d'exécuter les 50 fils comme ça :
for (int x = 0; x < 50; x++)
{
workers[x] = new Thread(new ParameterizedThreadStart(myMethod));
workers[x].Start(next());
}
Ce qui démarre rapidement les 50 threads "en même temps" et ensuite mon log (alimenté par myMethod) reçoit 50 réponses presque en même temps (1~1.5 seconde)
Comment puis-je faire en sorte que chaque thread qui vient de s'achever s'exécute à nouveau avec la chaîne suivante en tenant compte du fait que la classe Thread n'expose pas d'événement ou quelque chose de similaire ?
Note : J'ai fait quelques tests de performance, et je préfère utiliser les Threads réguliers plutôt que les BackgroundWorkers.
Utilisation de C# dans .net 3.5.