1

如标题所示,为什么以下代码执行了两次(Test在控制台中执行了 2 次)以及如何解决?

type
  TSelfThread = class(TThread)
    procedure Execute; override;
end;

procedure TSelfThread.Execute;
begin
  Writeln('Test');
end;

var
  SelfThread : TSelfThread;
begin
  try
    SelfThread := TSelfThread.Create(False);
  except
    on E: Exception do
      Writeln('Error');
  end;
end.
4

1 回答 1

2

这种行为的唯一可能解释是代码中的错误,您无法在终止进程之前等待线程完成。

把代码改成这样:

SelfThread := TSelfThread.Create(False);
SelfThread.WaitFor;
于 2019-05-29T15:59:51.517 回答