关于动态创建多线程

vivehua 2009-10-29 09:32:19
类似一个下载工具。
在一个LISTVIEW中,每添加一个下载任务,创建一个线程去下载。
请问该如何去管理创建出的多个现程?

如果LISTVIEW中的任务被用户取消,线程需要FREE。如何管理每个线程与LISTVIEW的关系?
...全文
118 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-11-03
  • 打赏
  • 举报
回复
jwman 2009-11-03
  • 打赏
  • 举报
回复
线程局部存储和api为线程提供同步的方法
jwman 2009-11-03
  • 打赏
  • 举报
回复
同意
无语孩童 2009-11-02
  • 打赏
  • 举报
回复
推荐用 TThreadList
KevinLau2016 2009-11-02
  • 打赏
  • 举报
回复
同意4樓
wxieyang 2009-10-31
  • 打赏
  • 举报
回复
其实,我觉得,问题不在于你用什么保存这些线程列表,而在于你需要一套完善的通知体系。
当线程结束之后,你需要通知主线程,而主线程停止某个线程时,你需要通知这个线程。

子线程通知主线程(最简单的就是使用线程的Synchronize方法)的时候,把当前线程的self传给主线程,主线程得到通知后,在你的listview中查找这个线程,找到后就设置其下载结束(或者在列表中删除)并释放这个线程。
主线程结束子线程则简单多了,直接Free就是了,线程的Free过程会自动停止当前线程的。

子线程创建的时候,不要指定完成时自动释放这个属性。
listvisew添加任务的时候 ListView.AddItem('任务名称', TWorkThread.Create);
而,查找则可以根据线程传回来的self同ListView.items.Objects[]中保存的线程比对。

这里不涉及到多线程访问同一个数据的问题,隐藏不需要使用 TThreadList
gyk120 2009-10-29
  • 打赏
  • 举报
回复
TThreadList可以创建一个线程列表,管理程序创建的线程
bdmh 2009-10-29
  • 打赏
  • 举报
回复
TThreadList
wxsan 2009-10-29
  • 打赏
  • 举报
回复
建议看看这个:http://www.cppblog.com/Khan/archive/2006/11/21/15503.html,里面有关于多线程的内容。

5,388

社区成员

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

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