C# WinForm 线程问题!!!
在主线程里有对 button1.Enable = true;
在另一个线程里要对button1.Enable = false;时抛出异常![线程间的操作无效!]
怎么才能解决?
用委托?还是有别的方法? 怎么用?
[解决办法]
呵呵。用Invoke.
[解决办法]
在线程中加一句
CheckForIllegalCrossThreadCalls = false;
试试.
[解决办法]
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的方式调用。稍后给出代码。
[解决办法]
楼上已经给出代码,我就不写了。