做了一个ftp下载程序:创建一条控制线程,控制线程又创建10条子线程用来下载上传。在控制线程中循环判断所有的子ftp线程是否都已经执行完成。
现在想问如何让程序等待控制线程执行完后再继续执行以后的程序?
现在想问如何让程序等待控制线程执行完后再继续执行以后的程序?
解决方案 »
- delphi画图中出现多变形 画不出来polygon 感觉程序都没有错误呀
- DelphiGuy() 有谁认识这个小鸟淫,此淫说话如同FS风格一样,是不是FS的马P夹?求签订
- 求教一个lisitview1响应treeview的节点。并显示数据表问题
- 在DELPHI中如何具体调用OUTLOOK?
- 大家可以说说都是用什么工具做delphi的安装程序的吗,
- 怎样获得硬盘序列号,急用。请各位高手近来帮助。谢谢!
- 如何使用installshield制作delphi打包,如何将bde等打进去(最好能提供实例)?
- webservice调用失败问题
- 如何得到AdoQuery的状态?急急急急急!!!!!!!!!
- 急求:delphi7调用webservice 编译时报错 :[Fatal Error] Internal error: L3169
- 连接MYSql返回结果集问题
- delphi 帮忙改写一个该函数成Unicode版本的,功能一样。
http://topic.csdn.net/u/20110217/11/56577c65-2e77-4f8f-b541-0be47cdb4d60.html?69977
ControlThread.Resume;
while true do
begin
if ControlThread.isEnd then
begin
break;
end;
sleep(0);
end;
showMessage('OK');
这样写的话,所有的线程都不干活了。ControlThread:=ControlThread.Create(true);
ControlThread.Resume;
//在这做些什么能等ControlThread释放了再showMessage
showMessage('OK');
//Do something;
dwet := WaitForSingleObject(需要等待结束的线程句柄, INFINITE);//如果等待多个线程用WaitForMultipleObjects
type
TBasicThread = class(TThread)
protected
procedure Execute; override;
public
end;var
tContrlThread:TBasicThread;//控制线程
.......主程序中
WaitForSingleObject(tContrlThread.Handle, INFINITE);//主程序会一直等待直到控制线程结束在控制线程的Execute可以这样
WaitForMultipleObject(FTP线程数目,FTP线程句柄数组,TRUE,INFINITE);//会等到所有线程都执行完毕才会继续往下执行
不过以上方法有个弊端就是如果你的FTP线程有一个进入了死循环无法正常返回,控制线程就会一直等待下去