如何实现主线程等待子线程执行完成后再继续往下执行,Delphi
时间:2011-09-20
来源:互联网
现在想问如何让程序等待控制线程执行完后再继续执行以后的程序?
作者: feifeia007 发布时间: 2011-09-20
作者: cntigercat 发布时间: 2011-09-20
http://topic.csdn.net/u/20110217/11/56577c65-2e77-4f8f-b541-0be47cdb4d60.html?69977
作者: babydog01 发布时间: 2011-09-20
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');
作者: feifeia007 发布时间: 2011-09-20
//Do something; dwet := WaitForSingleObject(需要等待结束的线程句柄, INFINITE);//如果等待多个线程用WaitForMultipleObjects
作者: m617105 发布时间: 2011-09-20
看一下置顶的贴子就可以了
http://topic.csdn.net/u/20110217/11/56577c65-2e77-4f8f-b541-0be47cdb4d60.html?69977
发帖前已经看过这个帖子了,本人属菜鸟,没看懂
Delphi(Pascal) code
//Do something;
dwet := WaitForSingleObject(需要等待结束的线程句柄, INFINITE);//如果等待多个线程用WaitForMultipleObjects
能解释下么?
作者: feifeia007 发布时间: 2011-09-20
引用 2 楼 babydog01 的回复:
看一下置顶的贴子就可以了
http://topic.csdn.net/u/20110217/11/56577c65-2e77-4f8f-b541-0be47cdb4d60.html?69977
发帖前已经看过这个帖子了,本人属菜鸟,没看懂
引用 4 楼 m617105 的回复:
Delphi(Pascal) code
//……
其实你的控制线程完全可以用WaitForMultipleObject来等待所有FTP线程都执行完毕然后继续往下执行
type
TBasicThread = class(TThread)
protected
procedure Execute; override;
public
end;
var
tContrlThread:TBasicThread;//控制线程
.......
主程序中
WaitForSingleObject(tContrlThread.Handle, INFINITE);//主程序会一直等待直到控制线程结束
在控制线程的Execute可以这样
WaitForMultipleObject(FTP线程数目,FTP线程句柄数组,TRUE,INFINITE);//会等到所有线程都执行完毕才会继续往下执行
不过以上方法有个弊端就是如果你的FTP线程有一个进入了死循环无法正常返回,控制线程就会一直等待下去
作者: m617105 发布时间: 2011-09-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28