我有一份需要处理的批次列表,需要一直处理。
我想并行处理每个块(5个),当一个块完成后再移动到下一个块。
但由于某种原因,下面的代码不会等待当前块被处理完毕就继续执行。
while (true)
{
foreach (string[] urlsArr in chunks)
{
int i = 0;
foreach (var url in urlsArr)
{
ThreadPool.QueueUserWorkItem(x =>
{
ProccessUrl(url, config, drivers[i]);
_resetEvent.Set();
i++;
});
}
_resetEvent.WaitOne();// this is not really waiting.
}
}