WinForm 中如何使用后台线程来操作UI
发布网友
发布时间:2022-04-26 07:15
我来回答
共3个回答
热心网友
时间:2022-06-25 03:44
.net 2005之后线程不允许直接操作UI,否则会报错,但是可以用委托的方式来解决。
比如下面的datareflash是线程里的一个方法,它需要刷新页面控件的数据,那么就可以定义一个委托来实现,参考大妈如下:
public void DataReflash(string text)
{
if (text == "901")
{
MyInvoke mi = new MyInvoke(BindDate);//把BindDate的方法放在委托里边就行了,类似于你的SetText方法,这个方法里边写什么代码都行,如给文本框赋值,或重新绑定datagrid的数据源等
this.BeginInvoke(mi);
}
}
热心网友
时间:2022-06-25 03:45
用委托,
或者在前台UI加一句
CheckForIllegalCrossThreadCalls = false;//不捕获对错误线程的调用
前者比较实用,后者治标不治本,不过都可以实现效果
热心网友
时间:2022-06-25 03:45
需要使用委托