应用程序关闭时如何正确停止线程?
我这样做:
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 效果很好?请解释我做错了什么。据我了解,我需要使用“如果分配”而不是“如果不是 Thread1.Finished”,对吗?