J'écris un programme dans lequel je commence généralement cinq threads. Les threads reviennent dans un ordre non déterminé. Chaque thread appelle une méthode qui renvoie une liste.Fils qui retournent des données dans .NET
Je fais ceci:
var masterList = List<string>();
foreach (var threadParam in threadParams)
{
var expression = threadParam ;
ThreadStart sub =() => MyMethod(expressions);
var thread = new Thread(sub)
{
Name = expression
};
listThreads.Add(thread);
thread.Start();
}
var abort = true;
while (abort) //Wait until all threads finish
{
var count = 0;
foreach (var list in listThreads)
{
if (!list.IsAlive)
{
count++;
}
}
if (count == listThreads.Count)
{
abort = false;
}
}
Voici donc le problème:
Chaque thread quand il se termine retourne une liste que je voudrais ajouter le MasterList déclaré plus tôt.
Comment peut-on y arriver?
Aussi je sais qu'il doit y avoir une meilleure façon que ci-dessous pour attendre toutes les discussions pour terminer
var abort = true;
while (abort) //Wait until all threads finish
{
var count = 0;
foreach (var list in listThreads)
{
if (!list.IsAlive)
{
count++;
}
}
if (count == listThreads.Count)
{
abort = false;
}
}
Même idée que la mienne ... mais une meilleure façon de répondre :( –