线程执行中,如何让主窗体正常响应

littlefish0101 2008-12-06 06:58:19
在我的程序中,有一个发送数据线程、一个接受数据线程、一个处理数据的线程。发送数据和接受数据的线程在执行的时候都不影响主UI线程,在处理数据的时候,主界面上的按钮响应比较慢,我应该在处理数据的线程中做什么处理呀?三个线程的优先级都是Normal。
...全文
125 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
EagleFew 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 littlefish0101 的回复:]
引用 10 楼 EagleFew 的回复:
进程至少拥有一个线程,进程在创建之后就有一个线程,如果是UI 程序的话,负责处理UI 或者事件响应的那个线程(也就是处理消息循环的那个线程)就称作主线程,而由用户或者系统再创建的其它的线程就称作工作线程.

另外,不知道你处理的时候怎么处理的.你说一个大数组,假如这个循环处理的话,循环完这个数组本身就可能耗费相当的时间

我有一个疑问,是不是一个大数组在线程中循环处理的时候,即使耗…
[/Quote]

我看成以为是主线程处理数据了.
littlefish0101 2008-12-09
  • 打赏
  • 举报
回复
在程序中,我要把一部分数据在ListView中显示,还要以报警灯的形式显示,但是今天在调试的发现,ListView更新的太快了,报警灯就不能正常显示了。报警灯是我根据情况LoadFromfile的一个小图片,我都使用了同步但是一快好象就不正确了
laowang2 2008-12-09
  • 打赏
  • 举报
回复
不会影响主界面,如果处理的结果要在主界面显示的话就要同步。
EagleFew 2008-12-08
  • 打赏
  • 举报
回复
进程至少拥有一个线程,进程在创建之后就有一个线程,如果是UI 程序的话,负责处理UI 或者事件响应的那个线程(也就是处理消息循环的那个线程)就称作主线程,而由用户或者系统再创建的其它的线程就称作工作线程.

另外,不知道你处理的时候怎么处理的.你说一个大数组,假如这个循环处理的话,循环完这个数组本身就可能耗费相当的时间
littlefish0101 2008-12-08
  • 打赏
  • 举报
回复
我也是这样理解的,界面不应该受影响
yuanreid 2008-12-08
  • 打赏
  • 举报
回复
独立的线程处理大运算时,除非将CPU占光了,否则不会影响界面响应。
littlefish0101 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 EagleFew 的回复:]
进程至少拥有一个线程,进程在创建之后就有一个线程,如果是UI 程序的话,负责处理UI 或者事件响应的那个线程(也就是处理消息循环的那个线程)就称作主线程,而由用户或者系统再创建的其它的线程就称作工作线程.

另外,不知道你处理的时候怎么处理的.你说一个大数组,假如这个循环处理的话,循环完这个数组本身就可能耗费相当的时间
[/Quote]
我有一个疑问,是不是一个大数组在线程中循环处理的时候,即使耗费相当的时间也不应该出现界面响应慢的情况,不知道我说的对不对
littlefish0101 2008-12-08
  • 打赏
  • 举报
回复
结构体变量是在线程没有运行起来的时候就已经写好的,后面只上调用里面的值
yuanreid 2008-12-07
  • 打赏
  • 举报
回复
结构体变量谁来写?还是重来没有人修过?如果修改就要同步。
littlefish0101 2008-12-07
  • 打赏
  • 举报
回复
在多线程中如果我存在几个线程读一个结构体变量的情况,线程只是读并不改变变量的值,我还需要对这个变量进行保护吗?
littlefish0101 2008-12-07
  • 打赏
  • 举报
回复
我在主线程中没有读写这个数组
yuanreid 2008-12-07
  • 打赏
  • 举报
回复
你的主线程中有没有读写这个数组或处理数据?如果有,可能就是这个原因。
TripH0101 2008-12-06
  • 打赏
  • 举报
回复
http://topic.csdn.net/t/20030814/22/2147763.html
littlefish0101 2008-12-06
  • 打赏
  • 举报
回复
线程中用CRITICAL_SECTION CriticalSection 把更新标志进行了保护
littlefish0101 2008-12-06
  • 打赏
  • 举报
回复
我是用一个全局的int数组来保存接受到的数据,定义了一个标志,在线程写数组的时候不能处理数据,处理数据的时候不能写数组,我不是很理解主线程这个概念,我也不知道这样是不是算数据存在与主线程中
yuanreid 2008-12-06
  • 打赏
  • 举报
回复
你的各个线程中间如何进行数据同步的,同步的数据是否存在于主线程中?
littlefish0101 2008-12-06
  • 打赏
  • 举报
回复
高手过来指点一下呀

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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