Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как работать с NumericUpDown из другого потока?


Автор: dmitry1208197320 2.2.2010, 14:47
Помогите, пожалуйста, со следующей ситуацией.
Я использую компонент SerialPort, который генерирует событие DataReceived в отдельном потоке. Мне нужно в этом событии обратится к свойству компонента NumericUpDown->Value, например

NumericUpDown->Value = 10;

Но при попытке выполнить данную строку кода компилятор выдаёт ошибку:
"Additional information: Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on."

Я так понимаю, что надо использовать возможности компонента System::Threading для правильного обращения к свойствам потоконебезопасного компонента NumericUpDown.

Можете привести пример корректного обращения к NumericUpDown->Value из другого (неосновного) потока?

Автор: KelTron 2.2.2010, 18:40
Если обработчик находится в классе формы, на которой нужный компонент, то:
Код

Invoke(new Action(() => this.numericUpDown1.Value = 10));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)