正确的线程破坏

And*_*kov 5 delphi multithreading destroy

Hello在我的表单中,我在运行时创建了TFrame.在这个框架中,我创建了后台线程,并在无限循环中执行命令.但是当我摧毁这个框架时,我应该销毁这个线程.我试试

thread.Suspend;
thread.Terminate;
FreeAndNil(thread);
Run Code Online (Sandbox Code Playgroud)

但得到AV和ThreadError.我应该如何销毁线程?

Lin*_*nas 13

您必须确保线程退出其Execute方法以正确终止它.

代码可能是这样的:

procedure TThread.Execute;
begin
  while not Self.Terminated do
  begin
    //do something
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当你想破坏线程时调用它:

thread.Terminate;
thread.WaitFor;
FreeAndNil(thread);
Run Code Online (Sandbox Code Playgroud)