Как правильно остановить поток при закрытии приложения?
Я делаю следующее:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if not Thread1.Finished
then
begin
Thread1.Terminate;
Thread1.WaitFor();
end;
end;
Но в Thread1.WaitFor у меня есть ошибка: «Ошибка потока: дескриптор недействителен ( 6) ". Если я использую WaitForSingleObject (Thread1.Handle, infinite) вместо WaitFor, все в порядке.
Почему, если я использую Thread.freeonterminate: = false, тогда WaitFor работает хорошо? Объясните пожалуйста, что я делаю не так. Насколько я понимаю, мне нужно использовать «if Assigned» вместо «if not Thread1.Finished», верно?