t2.Tick += (o, v) =>
{
for (int i = 0; i < list.Count; i++)
{
if (i >= 397) continue;// для проверки
new Thread(() => { list[i].ping(t2.Interval); }).Start();
dvg[4, list[i].numPrint].Value = list[i].ipStatus;
}
};
list.Count = 397. Когда i = 397, то заходит в цикл, создает поток. Почему игнорируется условие? подскажите знающие. Заранее спасибо.
Все верно. В вашем коде
for (int i = 0; i < list.Count; i++)
{
if (i >= 397) continue;// для проверки
new Thread(() => { list[i].ping(t2.Interval); }).Start();
dvg[4, list[i].numPrint].Value = list[i].ipStatus;
}
Поток стартует не мгновенно, поэтому к моменту старта потока переменная i уже была увеличена. Если вам надо захватывать значение переменной i, то вы можете сначала скопировать его в другую локальную переменную, например
for (int i = 0; i < list.Count; i++)
{
if (i >= 397) continue;// для проверки
var j=i; // копия
new Thread(() => { list[j].ping(t2.Interval); }).Start(); // захват копии переменной
dvg[4, list[i].numPrint].Value = list[i].ipStatus;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости