本来是个很简单的东西,之前做项目也有碰到,但是每次遇到了都要重新去Google..
其实跨线程调用控件还有个更简单的办法,直接Control.CheckForIllegalCrossThreadCalls = false就好,可这样是非安全的,所以大部分地方都不推荐使用。
这里自己写了个例子,让自己这次就好好的把这个消化掉!

Code
namespace CrossThread
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//主线程点击按钮事件
private void btnSetLabel_Click(object sender, EventArgs e)
{
try
{
//在新线程中修改label的值
Thread tdSetLabel = new Thread(new ThreadStart(SetLabel));
tdSetLabel .Start();
}
catch
{
}
}
//声明一个委托
private delegate void dlgateCrossThread(string labelText);
private void SetLabel(string text)
{
if (labState.InvokeRequired)
{
dlgateCrossThreadrt = new dlgateCrossThread(SetLabel);
this.Invoke(rt,new Object(){text});
}
else
{
labState.Text = text;
}
}
}
}