背景工人的文本框文本?

我一直在试图弄清楚如何从后台工作者中获取文本框的文本或其他属性。 有人知道怎么做这个吗? 我无法将其作为一个参数传递,因为它需要是实时的。 谢谢您的帮助!

我认为你只需要调用属性(伪代码):

private void bgw1_DoWork(object sender, DoWorkEventArgs e) { // looping through stuff { this.Invoke(new MethodInvoker(delegate { Text = textBox1.Text; })); } } 

使用ReportProgress方法和Background工作程序的事件。 这将切换到正确的线程为您。

或者如果在WPF中需要:

 private void bgWorker_DoWork(object sender, DoWorkEventArgs e) { string text = null; myTextBox.Dispatcher.Invoke(new Action(delegate() { text = myTextBox.Text; })); } 

我认为你应该使用invoke方法。

这是我的榜样。

 delegate void myDelegate(string name); //... private void writeToTextbox(string fCounter) { if (this.InvokeRequired) { myDelegate textWriter = new myDelegate(displayFNums); this.Invoke(textWriter, new object[] { fCounter }); } else { textbox1.Text = "Processing file: " + fileCounter + "of" + 100; } } //... private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { //... writeToTextbox(fileCounter.ToString()); } 

在dowork我操纵一些文本文件,我告诉用户我到目前为止已经处理了多少文件。