C# 多线程与UI响应 的时候.
我的程序有两个线程,一个主线程,一个通信线程.
通信线程会更新大量UI界面.
因为.net 禁止跨线程访问.所有我用委托来解决跨线程.
但是碰到一个问题,就是UI界面会有卡壳,滞后的现象.
这个怎么解决呢?
更新频率不高,我每次都有加sleep 延迟.
数据量也还好,10几个INT ,STRING 类型的变量.
主要是子线程执行函数的时候,出现主线程(ui线程)的停顿.
这种情况你可以试试异步,就是使用 BeginInvoke ,PS:如果数据更新太频繁了,可以使用定时器更新。UI现场和工作者线程使用一个同步锁,工作者线程锁定同步对象,然后把数据放到缓冲区里面。UI线程的定时器执行的时候也锁定同步对象,检测缓冲区是否改变,如果改变则进行更新窗口。
是不是性能问题?
不是,我 的电脑很好.是E5200的Cpu
你说的不是很清晰。
是因为更新频率高而界面假死,还是因更新数据量太大而单次的停顿?
要说得清楚些才能帮你……
更新频率不高,我每次都有加sleep 延迟.
数据量也还好,10几个INT ,STRING 类型的变量.
主要是子线程执行函数的时候,出现主线程(ui线程)的停顿.
那就不应该出现UI停顿了……你不是把sleep加到invoke那个方法里了吧?
顶楼上的。
不过感觉你遇到的问题应该还存在别的问题,能不能把你更新UI数据代码贴出来。