delphi - Application.Terminate 不

标签 delphi

如果我在方法内调用 Application.Terminate OR Application.MaiForm.Close 。应用程序不会终止!

procedure doSomething;
var
  ErrorFound: boolean;
begin
  [...]
  try
    if ErrorFound then
      Application.Terminate;
  finally
  [...]
  end;
end;

我不明白为什么。

请注意,我是从 Try 部分的 Try...Finally block 内部调用 Application.Terminate。

最佳答案

很可能您正在从本身不会终止的繁忙循环中调用 Application.Terminate。如果您进入事件处理程序但从未从其中返回,那么调用 Application.TerminateApplication.MainForm.Close 确实是徒劳的。这些关闭应用程序的例程是协作的。它们将消息发布到主消息循环,请求应用程序正常关闭。

例如,以下代码会表现出您所描述的症状:

procedure TMyForm.Button1Click(Sender: TObject);
begin
  while True do
    Application.Terminate;
end;

另一种(更有可能)的可能性是您从模态表单内部调用此函数,但不关闭模态表单。

除非您显示更多代码,否则我们只能做出这样的猜测。

关于delphi - Application.Terminate 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078637/

相关文章:

delphi - 如何显示长时间过程的 GUI 进度?

delphi - Delphi中如何防止错误输入(仅数字)?

delphi - 编译rc文件遇到 "expected exponent value"错误

delphi - 如何使用 TFileStream 将二维矩阵读入动态数组?

delphi - 在 Delphi 中更改引发异常的图标

delphi - 如何销毁数组数组

delphi - 如何从十六进制字符串中去除前导零?

delphi 文本矩形 自动换行

delphi - Delphi如何旋转png图像?

xml - 是否有用于 Delphi 和 Free Pascal 的 SAX 解析器?