var
SendCmdThread :array[0..99] of Thandle;
begin
for i :=0 to 99 do
SendCmdThread[i] := TSendCmdThread.create().Handle
end;
然后我在2MS定时器里查
procedure TForm1.Timer1Timer(Sender: TObject);
begin
For i :=0 to 99 do
begin
case WaitForSingleObject(SendCmdThread[i] ,1) of
WAIT_OBJECT_0: //ShowMessage('线程存在 且正在运行');
WAIT_TIMEOUT: begin edit1.Text :=timetostr(Now); exit; end; //ShowMessage('线程存在 且暂时没有运行');
WAIT_FAILED : begin ShowMessage('线程无效Handle '); exit; end;
end;
end;
end;
SendCmdThread :array[0..99] of Thandle;
begin
for i :=0 to 99 do
SendCmdThread[i] := TSendCmdThread.create().Handle
end;
然后我在2MS定时器里查
procedure TForm1.Timer1Timer(Sender: TObject);
begin
For i :=0 to 99 do
begin
case WaitForSingleObject(SendCmdThread[i] ,1) of
WAIT_OBJECT_0: //ShowMessage('线程存在 且正在运行');
WAIT_TIMEOUT: begin edit1.Text :=timetostr(Now); exit; end; //ShowMessage('线程存在 且暂时没有运行');
WAIT_FAILED : begin ShowMessage('线程无效Handle '); exit; end;
end;
end;
end;
SendCmdThread[i] := TSendCmdThread.create().Handle
end;会有问题吗(能按照预定的程序执行吗)?
----------------------------
设置线程生命时间.WaitForSingleObject(h, INFINITE);第二个参数是等待毫秒数。你1ms也太短了。INFINITE 表示一直运行,除非你主动退出线程。问题二:这100个线程执行完后,我还要继续产生100个线程即再重复一次或N次,for i :=0 to 99 do
SendCmdThread[i] := TSendCmdThread.create().Handle
end;会有问题吗(能按照预定的程序执行吗)?
-----------------------------------------
可以,没问题。如果没有完成,有失控的线程。