Запуск метода в отдельном потоке - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! На форме есть textBox1 и кнопка. При нажатии на кнопку, создаётся новый поток:
private void button1_Click(object sender, EventArgs e)
        {
            (new System.Threading.Thread(delegate()
            {
                GetCurrentIP(IP2);
            })).Start();
        }
Метод, запускаемый в отдельном потоке должен записывать в текстбокс определённый текст. Но при нажатии выскакивает ошибка: Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'IP2' не из того потока, в котором он был создан. Подскажите, как переделать код, чтобы работало..

Решение задачи: «Запуск метода в отдельном потоке»

textual
Листинг программы
        private void button1_Click(object sender, EventArgs e)
        {
            new Thread(() => GetCurrentIP()).Start();
        }
 
        private void GetCurrentIP()
        {
            if (textBox1.InvokeRequired)
                textBox1.Invoke(new Action(UpdateTextBox));
            else
                UpdateTextBox();
        }
 
        private void UpdateTextBox()
        {
            textBox1.Text += "Строка";
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы