у меня есть следующий код:
var workers = new Task<string>[workersCount];
var urls = new string[workersCount];
while (Numbers.HasNext)
{
for (int i = 0; i < workersCount; i++)
{
urls[i] = $"{URL}{id}_{Numbers.Get()}";
workers[i] = new Task<string>(() =>
{
using (var wb = new WebClient())
{
wb.Encoding = encoding;
return wb.DownloadString(urls[i]);
}
});
workers[i].Start();
}
Task.WaitAll(workers);
}
workersCount = 5. На вызове Task.WaitAll(workers) я получаю: System.IndexOutOfRangeException: "Index was outside the bounds of the array." При отладке видно, что в момент исключения переменная i = 5, хотя такого быть не должно. Где может происходить еще один инкремент и как это исправить?
var temp = i;, и внутри таска пользуйтесь переменной temp – tym32167 Aug 02 '18 at 08:59