с# чет не понятное для меня с потоками

171
08 января 2019, 08:20
for (int i = 0; i <= dataGridView1.RowCount - 2; i++)
            {
                Task.Run(() => {
                    dataGridView1[1, i].Value = pingSynhronyze(dataGridView1[0, i].Value.ToString());
                });                
            }

RowCount = 2. Каким образом в dataGridView1[0, i].Value.ToString() i=1, и как этого избежать?

Answer 1

Типичная ошибка с захватом переменной. Ваш таск стартует после того, как цикл закончился и переменная i уже увеличена. Попрбуйте перед захватом скопировать значение переменной и захватывать уже копию

for (int i = 0; i <= dataGridView1.RowCount - 2; i++)
{
    int j=i;
    Task.Run(() => {
        dataGridView1[1, j].Value = 
             pingSynhronyze(dataGridView1[0, j].Value.ToString());
        });                
}
READ ALSO
anglesharp специфичное id input элемента

anglesharp специфичное id input элемента

Возник вопрос, как использовать следующую конструкцию для входа на сайт

177
Ошибка доступа к ветке реестра (создание параметра)

Ошибка доступа к ветке реестра (создание параметра)

Помогите пожалуйста разобраться, почему не создается параметр в реестре (только на моем компьютере)Создаю параметр из программы на C# (запуск...

155
Работа с классом из внутри

Работа с классом из внутри

У меня есть класс скажем A (основной класс) и в нем список объектов класса BСразу после создания класса B(его экземпляра) мне нужно добавить...

153
Не обновляется Web приложение на IIS

Не обновляется Web приложение на IIS

Использую для проекта ASPNET Web-Api вместе с планировщиком задач Hangfire

152