如果我在方法中调用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.
很可能你是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)
另一种(更可能的)可能性是你从模态形式中调用此函数但不关闭模态形式.
除非你显示更多的代码,否则我们会减少这样的猜测.