日期:2014-05-18 浏览次数:20954 次
delegate void ThEvent(string text);
Thread th;
private void button1_Click(object sender, EventArgs e)
{
th = new Thread(new ThreadStart(Run));
th.IsBackground = true;
th.Start();
}
private void Run()
{
if (button1.InvokeRequired)
{
string strText = "bbbbbbbbbb";
ThEvent thEvent = new ThEvent(SetText);
this.Invoke(thEvent, new object[] { strText });
}
else
{
button1.Text = "bbbbbbbbbb";
}
}
private void SetText(string text)
{
button1.Text = text;
}
------解决方案--------------------
1:解决方案1,在线程的设置代码前执行如下操作:
Form.CheckForIllegalCrossThreadCalls = false;
你将可以无错的执行这段代码,但由于没有了线程检测机制,你的代码可能会有奇怪的问题;
2:解决方案2,使用Invokde或者BeginInvoke的方式调用。稍后给出代码。
------解决方案--------------------
楼上已经给出代码,我就不写了。