Delphi 关于单元初始化,我可以假设什么?

Delphi 关于单元初始化,我可以假设什么?,delphi,Delphi,本文档描述了在程序启动时发生的单元初始化,但在(自动加载的)BPL的情况下也有例外。顺序是由单元之间的依赖关系决定的,所以我不能假设它总是相同的。关于单元初始化,我可以假设什么?这可能是一个广泛的问题,但我希望下面的子问题的答案高度相关 在什么条件下,一个单元会被初始化 所有的初始化都是在启动时进行的,还是文档过于简化了 如果不是,还有什么会触发它 是否严格按顺序进行,即每个单元在下一个单元之前完全初始化 是否在主线程中执行所有初始化 如果不是,它仍然是线程安全的吗 我还没有找到更深入的文档

本文档描述了在程序启动时发生的单元初始化,但在(自动加载的)BPL的情况下也有例外。顺序是由单元之间的依赖关系决定的,所以我不能假设它总是相同的。关于单元初始化,我可以假设什么?这可能是一个广泛的问题,但我希望下面的子问题的答案高度相关

  • 在什么条件下,一个单元会被初始化
  • 所有的初始化都是在启动时进行的,还是文档过于简化了
  • 如果不是,还有什么会触发它
  • 是否严格按顺序进行,即每个单元在下一个单元之前完全初始化
  • 是否在主线程中执行所有初始化
  • 如果不是,它仍然是线程安全的吗
我还没有找到更深入的文档

在什么条件下,一个单元会被初始化

模块中包含的所有单元都已初始化

所有的初始化都是在启动时进行的,还是文档过于简化了

当模块加载时,单元在启动期间初始化

是否严格按顺序进行,即每个单元在下一个单元之前完全初始化

是否在主线程中执行所有初始化

在什么条件下,一个单元会被初始化

模块中包含的所有单元都已初始化

所有的初始化都是在启动时进行的,还是文档过于简化了

当模块加载时,单元在启动期间初始化

是否严格按顺序进行,即每个单元在下一个单元之前完全初始化

是否在主线程中执行所有初始化


“包含在您的模块中”是指链接?这是另一种表达方式。“包含在您的模块中”是指链接?这是另一种表达方式。值得一提的是,有一个初始化层次结构,从您的项目主文件派生。在解析单元时,它将按照在“uses”子句中找到单元的顺序初始化单元。这也意味着“系统”等也会在您自己的项目之前初始化。在循环中有一个过程会按使用时间的顺序触发所有所需单元的初始化(我见过这样的循环会按顺序初始化600多个单元)。值得一提的是,有一个初始化层次结构,从项目主文件中派生。在解析单元时,它将按照在“uses”子句中找到单元的顺序初始化单元。这也意味着“系统”等也会在您自己的项目之前初始化。在一个循环中,有一个单独的过程会按使用时间的顺序触发所有必需单元的初始化(我见过这样的循环按顺序初始化600多个单元)。