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;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите как реализовать вот такую идею List'ом (наверное, только не List в List'е), ибо двумерные, рваные массивы не подходят по условиям задачи,...
Есть сущность "настройки", в которой хранится путь к даннымЕсть сущности, которые пользуются настройками, чтобы строить свой путь к данным