Может кто ещё не в курсе
Однако поначалу немного сбило с толку меня нововведение во втором фреймворке
Вот это :
using System.Threading;
class AAA
{
private Thread backgroundThread;
private void DoPrintToLabel()
{
this.label1.Text = "Blablabla";
}
private void Form_Load(object sender, EventArgs e)
{
this.backgroundThread = new Thread(new ThreadStart(DoPrintToLabel));
this.backgroundThread.Start();
}
}
в версии фреймворка 1.1 нормально отработает. В версии же 2 мы получим эксепшн о Invalid cross-thread operation
т.е. из не основного потока мы не можем напрямую обратиться к контролу на форме.
Решается эта проблема например так :
using System.Threading;
class AAA
{
private Thread backgroundThread;
delegate void DoPrintToLabelDelegate();
private void DoPrintToLabel()
{
if (this.InvokeRequired)
{
DoPrintToLabelDelegate d = new DoPrintToLabelDelegate(DoPrintToLabel);
this.Invoke(d);
}
else
{
this.label1.Text = "Blablabla";
}
}
private void Form_Load(object sender, EventArgs e)
{
this.backgroundThread = new Thread(new ThreadStart(DoPrintToLabel));
this.backgroundThread.Start();
}
}