您的位置:首页 > 其它

驾车的技巧

2009-03-07 15:58 148 查看
有两种方式解决
1.在窗体构造函数中写Control.CheckForIllegalCrossThreadCalls =false;
2.使用Invoke等委托函数。
问题原因是。net2.0以后拒绝多线程访问空间,避免空间造成死锁。以前Control.CheckForIllegalCrossThreadCalls =false;默认就是这样,现在默认为true。
如果不会好几个线程同时操作一个控件用方法1就可以。如果存在多个线程一起操作控件使用方法2例如: this.progressBar1.Maximum = max;改为:this.setMaxProcess(_totalFrames);
private delegate void MyDelegate(int maxnum);

private void setMaxProcess(int max)
{
if (this.progressBar1.InvokeRequired)
{
MyDelegate del = new MyDelegate(setMaxProcess);
this.Invoke(del, new object[] { max });
}
else
this.progressBar1.Maximum = max;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: