Текст текстового поля от фонового рабочего? - PullRequest
4 голосов
/ 05 июля 2011

Я пытался выяснить, как получить текст моего текстового поля или другое свойство из фонового рабочего.Кто-нибудь знает, как это сделать?Я не могу передать это как параметр, потому что это должно быть в режиме реального времени.Спасибо за помощь!

Ответы [ 4 ]

6 голосов
/ 05 июля 2011

Я думаю, вам нужно просто вызвать свойство (псевдокод):

private void bgw1_DoWork(object sender, DoWorkEventArgs e)
{
  // looping through stuff
  {
    this.Invoke(new MethodInvoker(delegate { Text = textBox1.Text; }));
  }
}
2 голосов
/ 12 июля 2013

Или, если необходимо, в WPF:

private void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
    string text = null;
    myTextBox.Dispatcher.Invoke(new Action(delegate()
    {
        text = myTextBox.Text;
    }));
}
2 голосов
/ 06 июля 2011

Используйте метод ReportProgress и событие Фонового работника. Это переключится на правильную тему для вас.

1 голос
/ 14 июля 2011

Я думаю, вы должны использовать метод 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 я манипулирую некоторым текстовым файлом и информирую пользователя о том, сколько файлов я обработал до сих пор.

...