如果我在方法内调用 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.Terminate
或 Application.MainForm.Close
确实是徒劳的。这些关闭应用程序的例程是协作的。它们将消息发布到主消息循环,请求应用程序正常关闭。
例如,以下代码会表现出您所描述的症状:
procedure TMyForm.Button1Click(Sender: TObject);
begin
while True do
Application.Terminate;
end;
另一种(更有可能)的可能性是您从模态表单内部调用此函数,但不关闭模态表单。
除非您显示更多代码,否则我们只能做出这样的猜测。
关于delphi - Application.Terminate 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078637/