多线程中的TListView

wave_ 2009-03-18 05:21:47
程序中有一支线接收数据, 接收数据时会更新TLISTVEW, 我使用一个CRITICAL_SECTION 保护TLISTVIEW,更新数据时首先ENTER, 更新完LEAVE. UI对LISTVIEW操作时, 也首先是ENTER, 然后LEAVE .
但是当数据线程LOCK SECTION时, 如果此时UI(主线程)也去LOCK, 程序此时就会僵住. 经过测试发现是, 主线程ENTER后, 数据线程对LISTVIEW的操作, 使数据线程也挂住了, 致使程序挂了.

不知如何解, 数据线程我直接用的CreateThread方法, 没用TThread
...全文
79 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wave_ 2009-03-18
  • 打赏
  • 举报
回复
主线程已经Lock了,那么辅助线程无论如何也不能再Lock它?

为什么???

CRITIVAL_SECTION lock时, 主次线程都是随机的
BORLANDSUN 2009-03-18
  • 打赏
  • 举报
回复
主线程已经Lock了,那么辅助线程无论如何也不能再Lock它了,不然肯定会有问题的.这是代码设计的问题.
可以在主线程中做些修改,比如只在操纵线程时加锁.对于辅助线程也是一样.

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧