读书人

C# WinForm 线程有关问题!

发布时间: 2012-03-30 17:32:10 作者: rapoo

C# WinForm 线程问题!!!
在主线程里有对 button1.Enable = true;
在另一个线程里要对button1.Enable = false;时抛出异常![线程间的操作无效!]
怎么才能解决?
用委托?还是有别的方法? 怎么用?

[解决办法]
呵呵。用Invoke.
[解决办法]
在线程中加一句
CheckForIllegalCrossThreadCalls = false;

试试.

[解决办法]

C# code
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的方式调用。稍后给出代码。

[解决办法]
楼上已经给出代码,我就不写了。

读书人网 >C#

热点推荐