Прочитайте textBox.Text в BackGroundWorker - PullRequest
1 голос
/ 29 июля 2011

Я использую фоновый рабочий для выполнения длинного процесса над некоторыми файлами.Я беру адрес каталога из textBox1 и адрес файла, который используется для функции обработки из textBox2.У меня также есть ComboBox.На основе выбранного значения ComboBox программа выбирает другую функцию через простой случай переключения.

Теперь проблема в том, что я не могу получить доступ к значениям этих textBoxes и ComboBox в BackGroundWorker_DoWork.Я, конечно, получаю исключение доступа к элементу управления из потока, в котором он не был создан.Я много искал о делегатах и ​​все такое.Все примеры, которые я видел до сих пор, касаются назначения текста для textBox внутри программы.Пока что я хочу сделать, это прочитать текст, который пользователь вставил в textBox.Поскольку я не совсем знаком с концепцией делегатов, я хочу знать, как я могу читать и использовать тексты textBoxes и ComboBox и обрабатывать их в BackGroundWorker?

Извините, я не могу опубликовать код здесьиз-за политик безопасности.

/ MoNoo

1 Ответ

1 голос
/ 05 августа 2011

Вы не говорите, если это WinForms, WPF или Silverlight, но в WPF вы бы сделали это, используя свойство Dispatcher в выпадающем списке, что-то вроде этого:

    string theText;

    myComboBox.Dispatcher.Invoke( DispatcherPriority.Normal,
            new Action( delegate()
            {
                theText = myComboBox.Text;
            }
        ));

Это приведет к вызову в главном потоке и обратно.

...