【问题标题】:What determines the order of compliation or execution of source file in Delphi Prism?什么决定了 Delphi Prism 中源文件的编译或执行顺序?
【发布时间】:2011-10-25 07:56:23
【问题描述】:
在编写完足以在 Window 和 Linux(单声道)上编译和运行而没有编译错误的 Delphi Prism 程序后,我发现我的构造函数和加载事件的触发顺序与我预期的不同。我想,文件按照它们在项目文件中列出的顺序执行,就像在 Delphi .dpr 文件中一样。说到 .dpr 文件,是否有类似的 Delphi Prism 文件我没有研究。我查看了 program.pas 文件和属性。我没有看到任何可以给我提示或线索的东西。
如何确保项目文件在 Delphi Prism 中以正确的顺序执行?
【问题讨论】:
标签:
events
constructor
delphi-prism
project-files
order-of-execution
【解决方案1】:
Delphi Prism 按照文件在项目中定义的顺序进行编译。但是,不应该有任何依赖于文件顺序的东西,因为没有初始化部分。
至于你的其他问题。 Program.pas 默认包含入口点,它是一个名为“Main”的方法,您可以将其视为主要的开始/结束。
【解决方案2】:
.NET 不知道您的类在程序文件中的列出顺序。它只看到类。
一般情况下你可以想到这条规则:
静态(类)构造函数在实例 .ctor 或其他静态(类)方法第一次在此类上调用之前立即执行
虽然不是每次都这样(它们可以提前调用,但不能稍后调用),但这是一个很好的近似值,在大多数情况下都有效。
所以为了保证静态类初始化的一定顺序,我依赖以下:
我有一个具有 Initialize() 方法的静态类。这个方法是我在程序的 Main() 方法中调用的第一件事。在这个方法中,我按要求的顺序在其他类上调用 Initialize-Methods。这样可以确保执行初始化代码。