在 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
浙公网安备 33010602011771号