Представление таблицы данных: System.InvalidOperationException: «Операция между потоками недопустима: элемент управления» - PullRequest
0 голосов
/ 15 декабря 2018

Я пытался найти решение этой проблемы, но я не нашел или не знал, я новичок в C #

Я нашел много решений, которые говорят (вызвать), но я сделалне знаю, как исправить их в моем коде, Все, если найти - это просто решение для метки или текстового поля, Если возможно, решить проблему

"System.InvalidOperationException:« Операция с несколькими потоками недопустима: доступ к элементу управления »из потока, отличного от потока, в котором он был создан. '"

Изображение сообщения об ошибке

            for (int i = 0; i <= len - 1; i++)
        {

            if (i % 3 == 0)
            {
                split = proxy[proxy_counter].Split(':');
                num.Rows.Add(numlist[i], 0, 0, split[0], split[1], split[2], split[3]);

                proxy_counter++;
            }
            else
            {
                num.Rows.Add(numlist[i], 0, 0, split[0], split[1], split[2], split[3]);
            }

        }

1 Ответ

0 голосов
/ 15 декабря 2018

Проблема на MessageBox.Show.Вы не можете изменить пользовательский интерфейс из фонового потока.для этого вам нужно Invoke (как вы сказали) MessageBox.Show из основного потока.

Измените строку MessageBox для (при условии, что этот фрагмент кода находится внутри формы Windows):

InvokeIfRequired(() =>
    {
        MessageBox.Show("You Enter Less Than 6 Numbers!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    });

private void InvokeIfRequired(Action method)
{
    if (this.InvokeRequired)
    {
        Invoke(method);
    }
}
...