Мтак, вопрос немного меняется, надеюсь я копаю в ту сторону, если нет, то скорее меня остановите, а то эта хрень будет использоваться в очень ответственной структуре.
Поток не выгружается, потому что стопорится на процедуре doTerminate.
Код:
procedure TThread.DoTerminate;
begin
if Assigned(FOnTerminate) then Synchronize(CallOnTerminate);
end;
Если переписать процедуру под себя
Код:
...
procedure doterminate;Override;
...
procedure TMyThread.doterminate;
begin
if Assigned(onTerminate) then onTerminate(self);
end;
То поток завершается и закрывается.
От сюда новый вопрос. Почему Synchronize внутри потока вешает этот поток?