我一直认为表单生命周期的正确顺序是initialization -> Create -> OnCreate -> OnDestroy -> Destroy -> finalization,它适用于以下代码。
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TUMain, UMain);
Application.Run;然而,当我做一些改变..。
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TUMain, UMain);
if 1 = 2 then
Application.Run;然后TUMain命令更改为initialization -> Create -> OnCreate -> finalization -> OnDestroy -> Destroy
所以我想知道,准确的秩序是如何控制的,或者至少是什么导致了这种情况的改变?
发布于 2017-10-03 11:53:47
如果您从未调用Application.Run,那么自动创建的表单(或任何使用Application.CreateForm创建的表单)将在FinalizeUnits中释放,而不是在主窗体关闭时释放。
通常,Application.Run分配调用DoneApplication的ExitProc -这会枚举应用程序拥有的窗口,并在调用FinalizeUnits之前释放它们。如果没有调用Application.Run,那么就没有分配的ExitProc,在调用FinalizeUnits之前表单不会被释放。
https://stackoverflow.com/questions/46542752
复制相似问题