Запуск метода в отдельном потоке - 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 += "Строка";
        }

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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