在 Delphi 中,一个单元的 initialization
部分在该单元首次被使用时执行一次。具体来说,initialization
部分是在单元的初始化过程中执行的,通常是在以下几种情况下首次触发:
-
单元被显式引用:当你在代码中使用了某个单元(例如通过
uses
子句)时,如果该单元尚未被加载和初始化,那么它的initialization
部分将会被执行。 -
程序启动时自动加载的单元:如果单元是在项目的
.dpr
文件(项目文件)中被引用,那么在程序启动时,这些单元会自动被加载和初始化,其initialization
部分也会被执行。
重要的是,initialization
部分只会在该单元首次加载时执行一次。无论该单元在程序中被引用多少次,或者程序中有多少个其他单元引用了它,initialization
部分的代码都只会执行一次。
相对应的,还有一个 finalization
部分,它在单元被卸载时执行,通常用于清理资源或执行其他收尾工作。finalization
部分同样只会执行一次,在单位被卸载时触发。
以下是一个简单的例子来说明这一点:
unit MyUnit;
interface
uses
SysUtils;
implementation
initialization
Writeln('MyUnit initialization');
finalization
Writeln('MyUnit finalization');
end.
如果你在不同的单元或者程序文件中引用 MyUnit
,你会发现 MyUnit initialization
只会输出一次,即首次加载该单元时。同样地,MyUnit finalization
也只会在程序结束时执行一次。
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/18585384