Пожалуйста. подскажите:
Есть потоки, создаваемые в цикле. Все они должны выполняться параллельно, но при этом дальнейшее выполнение кода после потока должно происходить только по завершении всех этих потоков.
Код примерно такой:
List<Thread> lstThread = new List<Thread>();
while (currentItemMonth <= this.lastMonth)
{
GeneratorItemSheet g = new GeneratorItemSheet(sh);
Thread myThread = new Thread(new ThreadStart(g.GenerateMonthSheet));
myThread.Start();
lstThread.Add(myThread);
//Переходим на следующий месяц
currentItemMonth = currentItemMonth.AddMonths(1);
}
foreach (Thread thread in lstThread)
{
if (thread.IsAlive) thread.Join();
}
Т е складываю все потоки в лист, а потом циклом делаю им join.
Вопрос: Правильный ли это способ или надо как-то иначе. Просто у меня уходит в зависание, понять бы, это оттого, что идея в принципе неправильная или идея правильная, но хромает реализация внутри метода, вызываемого в потоке.