文本框文本来自后台工作器

本文关键字:后台 工作 本来 文本来 文本 | 更新日期: 2023-09-27 18:01:19

我一直在努力弄清楚如何从后台工作人员中获得我的文本框的文本或其他属性。有人知道怎么做吗?我不能把它作为参数传递,因为它需要是实时的。谢谢你的帮助!

文本框文本来自后台工作器

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

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

使用后台worker的ReportProgress方法和事件。这将为您切换到正确的线程。

如果在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中,我操作一些文本文件,并告诉用户到目前为止我处理了多少个文件。