D
demogorgon
Unregistered / Unconfirmed
GUEST, unregistred user!
写了一个TAlarmThread线程
procedure TAlarmThread.Execute;
begin
while not Terminateddo
begin
synchronize(Self.GetAlarm);//一个从数据库查询的操作,需要占用较长的时间
sleep(5000);
//WaitForSingleObject(hVar, INFINITE);
end;
end;
在表单创建的时候创建线程
procedure TMainWin.FormShow(Sender: TObject);
var
th := TAlarmThread.Create(false);//th为全局变量,th:TAlarmThread
end;
在表单关闭的时候释放线程
procedure TMainWin.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if th <> nil then
begin
th.Terminate;
if th.Suspended then
th.Resume;
th.WaitFor;
th.Free;
th := nil;
end;
end;
但是每次关闭表单都要等待好长一段时间才能关闭,我应该怎么处理?
是不是哪里写得有问题?
procedure TAlarmThread.Execute;
begin
while not Terminateddo
begin
synchronize(Self.GetAlarm);//一个从数据库查询的操作,需要占用较长的时间
sleep(5000);
//WaitForSingleObject(hVar, INFINITE);
end;
end;
在表单创建的时候创建线程
procedure TMainWin.FormShow(Sender: TObject);
var
th := TAlarmThread.Create(false);//th为全局变量,th:TAlarmThread
end;
在表单关闭的时候释放线程
procedure TMainWin.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if th <> nil then
begin
th.Terminate;
if th.Suspended then
th.Resume;
th.WaitFor;
th.Free;
th := nil;
end;
end;
但是每次关闭表单都要等待好长一段时间才能关闭,我应该怎么处理?
是不是哪里写得有问题?