Запуск задач внутри цикла: как передать значения, которые можно изменить внутри цикла?

I ' m пытается использовать TPL внутри цикла while, и мне нужно передать задаче некоторые значения, которые затем изменятся в цикле. Например, здесь показан пример с увеличивающимся индексом (обязательно после строки, в которой запрашивается создание задачи):

int index = 0;
Task[] tasks;
while(/*condition*/)
{
    tasks[index] = Task.Factory.StartNew(() => DoJob(index));
    index++;
}

Но, конечно, это не работает, так как значение индекса может быть увеличено перед задачей Начало. Возможным решением может быть передача WaitHandle, ожидание которого перед увеличением индекса и которое должно быть передано в метод DoJob, но это не кажется мне действительно хорошим решением. Есть еще одна идея?

7
задан Mauro Ganswer 26 March 2011 в 19:14
поделиться