Передать параметр в проблему потока - PullRequest
3 голосов
/ 27 октября 2010

В datagridview у меня есть поле IP-адреса.когда я нажимаю кнопку проверки состояния, я создаю поток для каждой строки в datagridview, а затем вызываю удаленный объект на хосте с этим IP, получаю некоторую информацию и устанавливаю другое поле datagridview в качестве этой информации.

, но естьпроблема.информация неверно установлена ​​в datagridview.почему?

    private void button_CheckStatus_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView.Rows.Count; i++)
        {
            IPAddress IP;
            if (IsValidIP(dataGridView["IP", i].Value.ToString(), out IP))
            {
                Thread t = new Thread(() => CheckStatusThreadFunction(IP, i));
                t.Start();
            }
        }

    }

1 Ответ

2 голосов
/ 27 октября 2010

Убедитесь, что не записываете переменную цикла:

    for (int i = 0; i < dataGridView_VSD.Rows.Count; i++) 
    { 
        int ii = i;
        IPAddress IP; 
        if (IsValidIP(dataGridView_VSD["VSD_IP", i].Value.ToString(), out IP)) 
        { 
            Thread t = new Thread(() => CheckVSDStatusThreadFunction(IP, ii)); 
            t.Start(); 
        } 
    } 

Это очень распространенная ошибка.

См. Например здесь

...