相关疑难解决方法(0)

自动或手动释放TThread

我的程序中有一个主线程和一个单独的线程.如果单独的线程在主线程之前完成,它应该自动释放.如果主线程首先完成,它应该释放单独的线程.

我知道FreeOnTerminate,我读过你必须小心使用它.

我的问题是,以下代码是否正确?

procedure TMyThread.Execute;
begin
  ... Do some processing

  Synchronize(ThreadFinished);

  if Terminated then exit;

  FreeOnTerminate := true;
end;

procedure TMyThread.ThreadFinished;
begin
  MainForm.MyThreadReady := true;
end;

procedure TMainForm.Create;
begin
  MyThreadReady := false;

  MyThread := TMyThread.Create(false);
end;

procedure TMainForm.Close;
begin
  if not MyThreadReady then
  begin
    MyThread.Terminate;
    MyThread.WaitFor;
    MyThread.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi multithreading delphi-7 tthread

9
推荐指数
2
解决办法
5299
查看次数

标签 统计

delphi ×1

delphi-7 ×1

multithreading ×1

tthread ×1