3

我想知道应用程序启动后Style存储在Generic.xaml文件中的 s 何时被加载,并且在完成之后,这种情况多久发生一次。我的意思是它们只加载一次还是每次Control实例化一个新对象时?此外,Style真正从资源文件中读取 -Resource 的频率是多少?

4

1 回答 1

3

I.我的意思是它们只加载一次还是每次实例化控件的新对象时加载?

Style's,ResourceDictionary仅在程序开始时加载一次。引用链接

项目下“Themes”目录下的每个资源字典都将被“编译”(此编译过程由 msbuild 和自定义构建任务完成)为 BAML 表示,这些 BAML 文件将被视为最终编译程序集的资源文件。

主题程序集的另一个好处是您可以使用主题程序集来定义纯资源或共享资源程序集,因为主题程序集中的资源字典将只加载一次,这比 ResourceDictionary.MergedDictionary 机制提供了更多的好处。

II.此外,Style-Resource 真正从资源文件中读取的频率是多少?

每个Style,ResourceDictionary都被编译成 BAML 代码,这些资源是程序集的一部分。所有程序集都由 JIT 编译器一次加载到内存中(在开始时),进一步的工作在内存中的应用程序中进行。我的意思是,我不认为应用程序每次读取一个文件的样式,按照JIT-compiler的逻辑,一切都以元数据的形式存储在内存中,后续的处理必须在内存中进行.

关于 JIT-compiler 的工作和关于 .NET 的工作,你可以阅读一精彩 的Jeffrey Richter.

于 2013-09-22T13:33:22.410 回答