После поиска я не нашел связанной темы с моей проблемой, так что вот так:
Из-за ограничения услуги, которую мы вызываем, мы планируем запускать заранее определенное количество запросов на обслуживание параллельно каждый раз. Код:
public static void RunConcurrentThreads(List<Item> list, Action<Item> action, int nNumberOfConcurrentThreads = 3)
{
for (int i = 0; i < list.Count; i++)
{
var taskList = new List<Task>();
for (int j = 0; j < nNumberOfConcurrentThreads; j++)
{
if (i + j < list.Count)
{
taskList.Add(action(list[i + j]));
}
else
{
break;
}
}
if (taskList.Count > 0)
{
Task.WaitAll(taskList.ToArray());
}
i = i + nNumberOfConcurrentThreads;
}
}
«Item» - это класс, который определяет объект, с которым мы имеем дело.
"action" - это метод void, который принимает один объект Item в качестве параметра. Метод вызовет службу, а затем сохранит возвращенную информацию в базу данных. Для завершения требуется около 0,5 - 1 секунды.
nNumberOfConcurrentThreads - это количество одновременных запросов, которые будут выполняться каждый раз.
Эта строка дает ошибку в заголовке
taskList.Add (действие (список [i + j]));
Так как исправить ошибку? Или есть лучший способ справиться с такой проблемой параллелизма?
Спасибо.