Textbox text from background worker?

后端 未结 4 1640
鱼传尺愫
鱼传尺愫 2021-01-13 14:14

I\'ve been trying to figure out how to get my textbox\'s text or other property from within a background worker. Does anybody know how to do this? I cannot pass it as a para

相关标签:
4条回答
  • 2021-01-13 14:44

    Use the ReportProgress method and event of the Background worker. That will switch to the correct thread for you.

    0 讨论(0)
  • 2021-01-13 14:47

    I think you need to just invoke the property (pseudo-code):

    private void bgw1_DoWork(object sender, DoWorkEventArgs e)
    {
      // looping through stuff
      {
        this.Invoke(new MethodInvoker(delegate { Text = textBox1.Text; }));
      }
    }
    
    0 讨论(0)
  • 2021-01-13 14:50

    i think you should use invoke method.

    here's my example.

    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());
    }
    

    in dowork i manipulate some textfile and i inform the user about how many files i have processed so far.

    0 讨论(0)
  • 2021-01-13 14:51

    Or if needed in WPF:

    private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    {
        string text = null;
        myTextBox.Dispatcher.Invoke(new Action(delegate()
        {
            text = myTextBox.Text;
        }));
    }
    
    0 讨论(0)
提交回复
热议问题