Получение свойств из объекта GUI в потоке - PullRequest
2 голосов
/ 29 сентября 2010

У меня есть программа на C #, которая выполняет поток. Внутри этой темы у меня есть следующий код:

string strDropDownValue = (string)ddlVersion.SelectedItem;

Я пытаюсь получить выбранное значение из выпадающего списка. Эта строка работает, очевидно, в однопоточном приложении. Поскольку я делаю это из потока, я получаю исключение между потоками во время выполнения. Я знаю, что если я хочу изменить значение объекта GUI из потока, мне нужно использовать InvokeRequired () и Invoke (). Однако что мне делать, если я просто хочу прочитать значение свойства? Мне все еще нужен Invoke ()? Я пытался найти решение этой проблемы, но не смог найти пример. Все примеры, которые я нашел, показывают, как установить свойство, а не как его прочитать. Любая помощь будет оценена!

1 Ответ

2 голосов
/ 29 сентября 2010

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

При этом, как правило, вы извлекаете информацию из элемента управления перед запуском фонового потока и просто передаете его в фоновый поток. Вот почему, я подозреваю, вы не найдете много фрагментов кода, показывающих, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...