0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 96
1

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

10.04.2014, 11:49. Показов 6785. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
На форме есть textBox1 и кнопка.
При нажатии на кнопку, создаётся новый поток:

C#
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
        {
            (new System.Threading.Thread(delegate()
            {
                GetCurrentIP(IP2);
            })).Start();
        }
Метод, запускаемый в отдельном потоке должен записывать в текстбокс определённый текст.
Но при нажатии выскакивает ошибка:

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll
Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'IP2' не из того потока, в котором он был создан.

Подскажите, как переделать код, чтобы работало..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2014, 11:49
Ответы с готовыми решениями:

Запуск метода по таймеру в отдельном потоке
Доброго времени суток! Господа знатоки помогите начинающему. Есть метод получения почты public...

Выполнение метода в отдельном потоке
В моей программе есть метод авторизации на одном сайте, вызываю вот так:...

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

При запуске метода с параметром делегатом в отдельном потоке виснет все приложение
public partial class MainWindow : Window { public delegate void...

3
Эксперт .NET
1667 / 1301 / 311
Регистрация: 15.06.2012
Сообщений: 4,983
Записей в блоге: 3
10.04.2014, 11:54 2
textBox1.Invoke()
ну-у-у-у, или как-то так...
0
0 / 0 / 0
Регистрация: 13.03.2013
Сообщений: 96
10.04.2014, 11:56  [ТС] 3
А поконкретнее? Не совсем понял..
0
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
10.04.2014, 12:04 4
Если совсем правильно, то как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        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 += "Строка";
        }
Добавлено через 1 минуту
Про сам метод читаем тут.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2014, 12:04
Помогаю со студенческими работами здесь

Запуск метода в новом потоке
Добрый день, помогите решить задания, у меня есть treeview, где есть метод на события BeforeExpand,...

Запуск метода в другом потоке
Здравствуйте) Есть отдельный поток(ListenerThread), в нем я пытаюсь обратиться к методу из другого...

Запуск метода в другом потоке и с таймером
Мне надо запустить Task плюс дать таймер для метода например каждые две секунды заходить в метод....

Запуск метода из другого класса в потоке
Доброго времени суток форумчане. Окажите пожалуйста содействие постигающим, так сказать. Код с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru