Application.Terminate没有

Fab*_*ale 3 delphi

如果我在方法中调用Application.Terminate OR Application.MaiForm.Close.申请没有终止!

procedure doSomething;
var
  ErrorFound: boolean;
begin
  [...]
  try
    if ErrorFound then
      Application.Terminate;
  finally
  [...]
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么.

请注意,我正在尝试部分的Try ... Finally块中调用Application.Terminate.

Dav*_*nan 8

很可能你是Application.Terminate从一个本身不会终止的繁忙循环中调用的.如果你输入一个事件处理程序但从不从它返回然后调用Application.Terminate或者Application.MainForm.Close确实是徒劳的.关闭应用程序的这些例程是合作的.他们将消息发布到主消息循环,请求应用程序正常关闭.

例如,以下代码将显示您描述的症状:

procedure TMyForm.Button1Click(Sender: TObject);
begin
  while True do
    Application.Terminate;
end;
Run Code Online (Sandbox Code Playgroud)

另一种(更可能的)可能性是你从模态形式中调用此函数但不关闭模态形式.

除非你显示更多的代码,否则我们会减少这样的猜测.