主程序如何等待分线程执行完毕后才退出?(100)

  • 主题发起人 抵住诱惑
  • 开始时间

抵住诱惑

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Test;
begin
//.........end;
var Tid:Dword;
TestHwnd:Thandle;
begin
TestHwnd:= CreateThread(nil, 0, @Test, nil, 0, TID);
end;
我记得主程序通过某个 API 函数可以 等待 procedure Test;
里边的内容执行完才结束程序. 具体忘记了,知道的麻烦跟个贴告知,谢谢了!
 

放飞

Unregistered / Unconfirmed
GUEST, unregistred user!
主线程不能进行等待,否则,你的程序将无法响应任何消息,也就是程序会死掉不动了。其实,你可以在线程函数中,向主线程发送消息来通知子线程的状态,主线程仅仅是检测这些状态来获得子线程运行到什么程度了。比如,将主窗体的句柄传递给子线程,然后子线程向主线程发送消息,主线程中的主窗体做个消息响应函数来接受子线程发送的消息。如果你一定要采用等待的方式: //每次等待一秒,然后处理下消息队列,然后接着等待 while WaitForSingleObject(TestHwnd, 1000) = WAIT_TIMEOUTdo
Application.ProcessMessages;这样可以防止主线程陷入无限等待
 
S

smlabc

Unregistered / Unconfirmed
GUEST, unregistred user!

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
504
import
I
顶部