Чтобы немного поиграть с потоками, делегатами и работниками фонового рисунка, я собираю несколько небольших приложений, у меня проблемы с одним из них. У меня есть форма Windows, с текстовым полем, кнопкой и богатым текстом. При нажатии на кнопку, текст в текстовом поле используется в качестве параметра для создания экземпляра класса, например:C# Threading issue
public partial class Form1 : Form
{
private BackgroundWorker backgroundWorker;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(worker_DoWork);
backgroundWorker.RunWorkerAsync();
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
new Thread((ThreadStart)delegate()
{
this.BeginInvoke((ThreadStart)delegate()
{
foreach (string line in textBox1.Lines)
{
Dig digger = new Dig(line, textBox1.Text);
digger.DomainChecked += new Dig.DomainCheckedHandler(OnUpdateTicker);
string response = digger.GetAllInfo();
richTextBox1.AppendText(response);
Application.DoEvents();
}
});
}).Start();
}
void OnUpdateTicker(string msg)
{
new Thread((ThreadStart)delegate()
{
this.BeginInvoke((ThreadStart)delegate()
{
label4.Text = msg;
Application.DoEvents();
});
}).Start();
}
}
При отладке я бегу в «textBox1.Lines» бросил исключение типа ' Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException ' Любые советы о том, как решить эту проблему?