<分区>
我正在尝试在 while 循环中使用 TPL,我需要将一些值传递给任务,然后这些值会更改到循环中。例如,这里显示了一个索引递增的示例(必须在请求创建任务的行之后):
int index = 0;
Task[] tasks;
while(/*condition*/)
{
tasks[index] = Task.Factory.StartNew(() => DoJob(index));
index++;
}
但是当然它不起作用,因为索引值可以在任务开始之前递增。一个可能的解决方案是也传递一个 WaitHandle,在递增索引之前等待它并且必须将其发送到 DoJob 方法中,但在我看来这并不是一个很好的解决方案。还有其他想法吗?