C# 多线程与UI响应

C#多线程与UI响应的问题.我的程序有两个线程,一个主线程,一个通信线程.通信线程会更新大量UI界面.因为.net禁止跨线程访问.所有我用委托来解决跨线程.但是碰到一个问... C# 多线程与UI响应 的问题.
我的程序有两个线程,一个主线程,一个通信线程.
通信线程会更新大量UI界面.
因为.net 禁止跨线程访问.所有我用委托来解决跨线程.
但是碰到一个问题,就是UI界面会有卡壳,滞后的现象.
这个怎么解决呢?
展开
 我来答
桂纶美
2011-10-13 · TA获得超过1973个赞
知道小有建树答主
回答量:173
采纳率:0%
帮助的人:275万
展开全部
楼主哥哥可以使用委托,使用Delegate
我给楼主一点提示:
首先,在你要工作的类work中定义一个委托:
public delegate void refresh(string xxx);
然后,定义你的工作函数,比如你的通信函数
public void connect(string xxx){ .....;.....;label.text="ok";}//这里的label我的意思就是你所要更新的UI控件,只是一个例子,你可以在你的工作类里定义很多你需要更新的控件。
最后,在你需要调用函数function的地方,添加
function{label.BeginInvoke(new refresh(connect),"xxx");}

这样,完成你的工作类的定义

在main函数里,把你的线程绑定到这个工作函数:
Thread thread =new Thread(new ThreadStart(work.function);//这里我是新建了个线程,你可以用你自己的线程
然后,main中如果有一个label1
work.label=this.label1;//把这个label1赋到你的工作类 work中定义的那个的label,然后你就可以看到,界面中的label1的text刷新了。

跨线程调用无压力,随意调用,楼主不清楚的话,可以Message我。
追问
你们说的委托,网上一搜以把.还用单独提问么?!
我汗
我的问题不是这些
追答
backgroudwork 可以试试
狼洞领主
2011-10-11 · 超过19用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:52.3万
展开全部
用委托
通信线程需要改变ui的操作都委托给主线程完成
只有主线程具有操作UI的权限
追问
这个我知道,可是就是因为委托给主线程了,所有才会导致UI线程的延迟和滞后.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式