我应该怎样判断一个线程是否存在!!!!!! (50分)

  • 主题发起人 主题发起人 tank37
  • 开始时间 开始时间
首先要知道那个线程的handle
 
知道了再怎么样????
 
FAppHandle := OpenProcess(PROCESS_QUERY_INFORMATION,False,lpProcessInformation.dwProcessId);
//GetExitCodeProcess
If Not Verifyhaskett then
GetExitCodeProcess(FAppHandle,FAppState);
 
> 知道了再怎么样????
GetExitCodeThread 检查
 
那如何防止开创建两个同样的线程呢?
 
//那如何防止开创建两个同样的线程呢?
如果你要防止,那等于放弃多线程:)
 
假设test为一个线程类
var
test:TTestThread;
用下面语句来判断一个线程是否存在
var
i:dword;
isquit:boolean;
if assigned(test)
begin
isquit:=GetExitCodeThread(test.handle,i);
if isquit then
/test未free,因为tthread.destroy中有执行语句
//if FHandle <> 0 then
CloseHandle(FHandle);
begin
if i=STILL_ACTIVE then
showmessage('线程在活动中')
else
showmessage('线程已终止terminate,但句柄未释放free');
end
else
begin
showmessage('线程句柄已释放free');
//可以用GetLastError取得错误代码
end;

end;
else
showmessage('该线程不存在');
end;
 
后退
顶部