我自己的一个进程要更改主窗体的proBar.Maximum。
这是原来的代码:
this.proBar.Maximum = this.selset.Count; //编译无措,vs05下调试出错,进程间无法访问
我baidu过,说这种情况要使用委托。但本人太菜,试了半天也不行,大侠帮忙看看。
这种情况下委托应该怎么用呢?
这是原来的代码:
this.proBar.Maximum = this.selset.Count; //编译无措,vs05下调试出错,进程间无法访问
我baidu过,说这种情况要使用委托。但本人太菜,试了半天也不行,大侠帮忙看看。
这种情况下委托应该怎么用呢?
解决方案 »
- 一般处理程序和一般的网站有什么区别?
- 如何设置应用程序访问文件的时间间隔???
- GRIDVIEW的模板里控件的事件问题
- 设计实体类问题:
- 如何获取当前Web页面提交给服务器的字符串流?<请教思归>
- 关于在remoting中传递数组问题,一经解答,立即散分!!!!
- 使用Media Player编写播放器的问题.
- 将数据从数据库中读到listview中出错,不知道是什么错误
- 怎样在windows窗体之间传递参数, 比如根据登陆情况确定主窗口的界面,在线等!!!
- 用什么方法来判断datagrid里是否有数据?
- TABLE打印 在FIREFOX下面正常 为什么在IE下面就会有200多页呢
- C#操作EXCEL复选框的问题
{
proBar.Maximum = selset.Count;
}void Form()
{
Thread t = new Thread(set);
t.Start();
t.Join();
}
//这样是不行的//方法1用委托set()方法不变,但这样就不能使用Theard,而是自动使用系统线程池
delegate void setDeleagte();void Form()
{
setDeleagte setdl = new setDeleagte(set);
this.BeginInvoke(setdl); //这样就是在UI线程上调用了set方法,这个BeginInvoke需要以为委托参数
}//方法2,修改set方法,就可以使用自己的Theard
public void set()
{
//判断这个方法被调用是在创建控件线程还是非创建控件线程
if (this.InvokeRequired)
{
setDeleagte setdl = new setDeleagte(set);
this.BeginInvoke(setdl);
}
else
this.txtName.Text = "ssss";
}
在窗体构造函数里面加条语句: Form.CheckForIllegalCrossThreadCalls = false;你出错的原因是你的控件是主线程(main)生成的,而现在其他线程要使用它,05觉得不安全,就禁止你这样做 。加上这条语句后呢,相当于你在说:05你不用去检查线程之间的非法调用了,无论是哪个线程创建的控件,其他线程都可以用并修改
学习……