Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
1

Task и изменение texbox из другого потока

28.06.2016, 10:01. Показов 881. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Выполняю метод через

C#
1
task = Task.Factory.StartNew(() => { Prepare(); });
Внутри метода есть строчка:

C#
1
textbox1.Text = text;
Понятное дело, на ней выскакивает ошибка о том, что обращение к контролу идет не из того потока, в котором он был создан.

Тогда я пишу:

C#
1
2
3
4
this.Invoke((MethodInvoker)delegate
{
   textBox1.Text = text;
});
При этом программа просто зависает.

Подскажите, как правильно изменить значение в контроле из метода, запущенного в Task?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2016, 10:01
Ответы с готовыми решениями:

Изменение DataSource таблицы из другого потока
Доброго времени суток. Есть DataGridView и BindingList<myClass> myList myList является DataSource...

Как из одного потока узнать состояние другого потока
Подскажите пожалуйста, как из одного потока узнать, что другой поток еще не запущен. Например,...

Task. Обработка объектов главного потока.
Имеется дерево (treeview) лекций, каждый элемент состоит из названия и ссылки на файл. Необходимо...

[UWP] Изменение значения в TexBox->Text
У меня есть переменная типа double и я не могу его отправить в text компонента textbox. Я туда...

6
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
28.06.2016, 10:10 2
Процент загрузки e.ProgressPercentage
Загрузка файла на сервер с использованием BackgroundWorker - отображение прогресса
1
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
28.06.2016, 11:55  [ТС] 3
Спасибо, посмотрю.

Как я понял, Invoke следует использовать в проектах на .NET Framework 3.5 и ниже.
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
28.06.2016, 11:58 4
Да нет, он по прежнему работает.

Добавлено через 1 минуту
Чем не удобен Invoke - можно легко завалить очередь сообщениями, и после удаления окна неотрабатанные запросы станут вылетать с ошибками.
0
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
28.06.2016, 13:46  [ТС] 5
Странно, почему же у меня тогда программа виснет при Invoke.
Я переписал код таким образом, чтобы обновление интерфейса производилось уже ПОСЛЕ завершения task.
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
28.06.2016, 13:48 6
Выложите простой пример, с задачей и Invoke, посмотрим.
0
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
28.06.2016, 13:58  [ТС] 7
Сложно выдрать из большой программы кусок. Я тогда попозже сделаю простой пример...
0
28.06.2016, 13:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2016, 13:58
Помогаю со студенческими работами здесь

Изменение texbox.text из другого класса / создание экземпляра единственной формы
Здравствуйте, перелопатила кучу инфы, но что-то никак. Такая ситуация: Есть класс формы: public...

Изменение контрола из другого потока
Облазил все что только можно в интернете, но все действия приводят к этой ошибке. Причем по идее...

Изменение формы из другого потока
Добрый день. прошу прошения за избитую тему, но все же не могу разобраться как правильно делать ...

Изменение свойств из другого потока
Хочу получить доступ доступ к контролам MainWindows из другого окна.Но если объявлять Main Window...


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

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