В одном цикле я постоянно получаю System.ArgumentOutOfRangeException:
C#
for(int i=0; i<Answers.Count; i++)
{
Answers[i].BeginInvoke(new InvokeDelegate(() => { Answers[i].Enabled = false; Answers[i].Visible = false; }));
}
Длина Answers - 6, но при проверке оказалось что i достигает 6! Это же невозможно(или я ошибаюсь)?
Типичная ошибка с захватом переменной. Попробуйте это
for(int i=0; i<Answers.Count; i++)
{
int j = i;
Answers[i].BeginInvoke(new InvokeDelegate(() => { Answers[j].Enabled = false;
Answers[j].Visible = false; }));
}
Проблема в том, что всё, что внутри этого кода BeginInvoke(....) запускается не сразу, а через какой то промежуток времени. К тому моменту ваш цикл уже закончился и переменная i уже равна Answers.Count.
Продвижение своими сайтами как стратегия роста и независимости