方法一:System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
不推荐使用这种方式,禁止编译器对跨线程访问做检查的方式实现。
方法二:使用delegate和invoke
private delegate void UpdateLabel2Delegate(string message);
void UpdateLabel2(string message)
{
if (label1.InvokeRequired)
{
UpdateLabel2Delegate md = new UpdateLabel2Delegate(UpdateLabel2);
label1.Invoke(md, new object[] { message });
//label1.BeginInvoke(md, new object[] { message });
}
else
{
label1.Text = message;
}
}
或者:
void UpdateLabel2(string message)
{
this.Invoke((EventHandler)delegate{ this.label1.Text = m