等待线程结束 ( 积分: 100 )

  • 主题发起人 主题发起人 simoncai
  • 开始时间 开始时间
S

simoncai

Unregistered / Unconfirmed
GUEST, unregistred user!
我用tThread建立一个线程,在调用线程后,如何等待此线程结束,再执行调用线程语句的下面语句
 
我用tThread建立一个线程,在调用线程后,如何等待此线程结束,再执行调用线程语句的下面语句
 
可以判断线程的状态
 
启动线程,然后又要等线程完成后才进行下一不工作?
那不如写一个过程或函数(非线程)方式调用就可以了 :》》
 
最简单方法是发自定义消息!
 
等待一个线程结束的标准处理方法:
type
TMyThread = class(TThread)
private
FCount: Integer;
procedure UpdateInfo();
protected
procedure Execute;
override;
end;

{ TMyThread }
procedure TMyThread.Execute;
begin
FCount := 0;
while FCount < 1000do
begin
Inc(FCount);
Synchronize(UpdateInfo);
end;
end;

procedure TMyThread.UpdateInfo();
begin
Form1.Caption := IntToStr(FCount);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
test: TMyThread;
begin
test := TMyThread.Create(False);
//等待线程结束
while WaitForSingleObject(test.Handle, 0) <> WAIT_OBJECT_0do
Application.ProcessMessages;
ShowMessage('Thread Terminated!');
//Continue your process...
end;
 
另外,设置一个Thread的OnTerminate事件,在里面填充自己需要的信息,比如结束标志等
 
使用waitfor语句等待线程的结束
 
你可以这样:当上一个线程结束的时候,发消息给下一个线程;
让下一个线程执行,这样就不用等待了;
这个主意不错;
 
waitfor可以完成此功能
 
后退
顶部