델파이로 프로그램을 작업을 하고 있는데
TThread로 생성을 하고 종료를 시키는 중에 이 어플리케이션의 핸들이 자꾸 증가를 합니다.
procedure TForm1.Start
begin
try
if F_TestThread <> nil then
begin
if not F_TestThread.Terminated Then
begin
F_TestThread.Terminate;
end;
if F_TestThread <> nil then
begin
F_TestThread.FreeInstance;
end;
end;
F_TestThread := TTestThread.Create(True);
F_TestThread.F_Test := TfrmTester(Self);
F_TestThread.Resume;
except
ErrorMsg(mtError,'Tester Start Thread Create Error',True);
end;
end;
procedure TTestThread.Execute;
begin
....
Self.Terminate;
end;
위 의 함수에서 start를 하면 쓰레드가 생성됩니다. 그리고 쓰레드가
할일을 하면 자동으로 소멸하게 만들었습니다. 그런데
작업관리자에서 이 App를 보고 있으면 핸들이 1증가를 하는데
쓰레드가 끝나고 나서도 핸들수가 줄지를 않습니다. 핸들수가 무한으로 증가해도
상관이 없는것인지요? 그리고 쓰레드 생성시 생성된 핸들을 감소시킬수있는
방법은 없나요?
제가 보기에는 핸들이 남아 있다는 얘기는 어떤것이 프리가 제대로 되지 않았다는 얘기가 아닐까 싶습니다.
F_TestThread.F_Test := TfrmTester(Self);
아마도 F_Test <- 이녀석을 프리 하지 않아서 생기는 문제가 아닐까 싶습니다..
한번 확인해 보세요.