【发布时间】:2023-11-10 07:49:01
【问题描述】:
我想在不执行任何其他代码行的情况下终止 Delphi 应用程序,我想知道哪种方法是正确的方法。此外,我想知道我目前正在做的事情是否有问题。 基本上,我的代码如下所示:
//Freeing all objects (Obj1.Free, etc..)
Application.Terminate;
Halt;
这是停止 Delphi 应用程序的正确方法还是应该以其他方式完成?
【问题讨论】:
-
关闭主窗体是正确的方法。如果您愿意,可以直接使用
Application.MainForm.Close; -
关闭 MainForm 只需调用
Application.Terminate,因此您可以在需要时直接调用它。但是,不要说它只能在主线程的上下文中调用,不能在工作线程中调用。 -
@RemyLebeau 调用
Application.MainForm.Close不会简单地调用Application.Terminate,但如果分配了主窗体的OnCloseQuery和OnClose事件,它将处理它们。您甚至可以通过将OnCloseQuery事件的CanClose变量设置为false 来阻止应用程序关闭。但是调用Application.Terminate不会处理这些事件。 -
为了防止当前过程中的附加代码执行,在
Application.Terminate;之后使用Exit;而不是Halt; -
@SilverWarior - 是的,Close 将首先调用 DoClose() 然后终止。