Как в Task использовать Элементы из панели? [дубликат]

259
04 июля 2017, 19:57

На данный вопрос уже ответили:

  • Работа с контролами из фонового потока 1 ответ

Есть Task внутри идет цикл и при каждой итерации нужно вывести данные в TextBox. Пишу так

Task.Run(() => {
   for(int i = 0; i < 100; i++){
      txtBox.text = "Example: " + i;
   }
},TaskScheduler.FromCurrentSynchronizationContext);

пишет что был создан не из того потока. как быть? Нигде норм не могу прочесть про это. кто сталкивался помогите.

Answer 1

Тебе нужно использовать метод Invoke у textBox.

Invoke - Выполняет указанный делегат в том потоке, которому принадлежит базовый дескриптор окна элемента управления

Task.Run(() => {
   for(int i = 0; i < 100; i++){
      txtBox.invoke(new Action(()=>{textBox.text = "Example: " + i;}))
    }
},TaskScheduler.FromCurrentSynchronizationContext);

UPDATE

WinForm - txtBox.invoke

WPF - txtBox.Dispatcher.Invoke

READ ALSO
Как поменять line endings в Visual Studio 2017 (русская версия)?

Как поменять line endings в Visual Studio 2017 (русская версия)?

Скачала Unity, пишу скрипт на C# в вижуалке, но возникает проблема inconsistent line endings

425
Помогите пожалуйста с таймером С#

Помогите пожалуйста с таймером С#

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

200
Dictionary and custom pair [дубликат]

Dictionary and custom pair [дубликат]

На данный вопрос уже ответили:

213
Отключение наследования на папке

Отключение наследования на папке

Создаю автоматический файловую структуруИ на папке Private, нужно отключить наследование

233