日期:2014-05-18 浏览次数:20812 次
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的方式调用。稍后给出代码。
------解决方案--------------------
楼上已经给出代码,我就不写了。