比如我想创建5个线程,我如何判断其中一个已经结束?
例如:
var
test1: array of test; //test为继承的TThread
i:integer;
x:=array of string;
begin
for i := 0 to 9 do
begin
test1[i] := test.create(x[j]);
end;
end;我该如何判断第几个已经结束,然后释放该线程,然后再创建它??
例如:
var
test1: array of test; //test为继承的TThread
i:integer;
x:=array of string;
begin
for i := 0 to 9 do
begin
test1[i] := test.create(x[j]);
end;
end;我该如何判断第几个已经结束,然后释放该线程,然后再创建它??
test1: array of test; //test为继承的TThread
i : integer;
x : array of string;procedure TForm1.ThreadTerminate(Sender: TObject);
var
iIndex : Integer;
iLoop : Integer;
begin
iIndex := -1;
for iLoop := 0 to 9 do
if test1[iLoop].ThreadID = test(Sender).ThreadID then
begin
iIndex := iLoop;
break;
end;
if iIndex <> -1 then
begin
//test1[iIndex]线程已经终止
//在此处加上你自己的处理代码
end;
end;begin
for i := 0 to 9 do
begin
//test的constructor Create函数必须要加上Suspended参数, 即
//constructor Create(Suspended: Boolean; ......);
test1[i] := test.Create(True, x[j]);
test1[i].OnTerminate := ThreadTerminate;
test1[i].Resume;
end;
end;