在BackGroundWorker中读取textBox.Text

时间:2011-07-29 11:52:48

标签: text combobox textbox backgroundworker

我正在使用后台工作程序对某些文件执行长时间的处理。我从textBox1获取目录的地址,并从textBox2获取用于处理函数的文件的地址。我也有一个ComboBox。根据ComboBox的选定值,程序通过简单的开关盒选择不同的功能。

现在的问题是我无法在BackGroundWorker_DoWork中访问这些textBox和ComboBox的值。我当然得到了从未创建的线程访问控件的例外。我已经搜索了很多代表和所有这些。到目前为止我看到的例子都是关于将文本分配给程序内的textBox。虽然我想要做的是阅读用户插入textBox的文本。由于我不太熟悉委托的概念,我想知道如何阅读和使用textBoxes和ComboBox的文本并在BackGroundWorker中处理它们?

很抱歉,由于安全政策,我无法在此处发布代码。

/ MoNoo

1 个答案:

答案 0 :(得分:1)

你没有说这是WinForms,WPF还是Silverlight,但是在WPF中你可以使用组合框的Dispatcher属性来做这件事,如下所示:

    string theText;

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

这会将调用编组到主线程上并再次返回。