我想知道在应用程序启动后,Style
文件中存储的Generic.xaml
是否正在加载,并且在此之后,这种情况发生的频率。我的意思是它们只被加载一次或每次Control
的新对象被实例化时?此外,Style
- 资源是否经常从资源文件中读出?
答案 0 :(得分:2)
I.
我的意思是他们只加载一次或每次实例化一个新的Control对象?
Style's
,ResourceDictionary
仅在程序开始时加载一次。引自link:
"主题"下的每个资源词典您的项目下的目录将被编译为#34;(此编译过程由msbuild和自定义构建任务完成)到BAML表示中,并且这些BAML文件将被视为最终编译的程序集的资源文件。
主题程序集的另一个好处是您可以使用主题程序集来定义仅资源或共享资源程序集,因为主题程序集中的资源字典只会加载一次,这可以提供比ResourceDictionary.MergedDictonaries更多的好处。机构。
II.
此外,Style-Resource实际上是多久从资源文件中读出来的?
每个Style
,ResourceDictionary
都编译成BAML代码,这些资源是程序集的一部分。所有程序集都由JIT编译器(在开始时)加载到内存中,并且进一步的工作在内存中的应用程序中。我的意思是,我不认为每次文件读取样式时应用程序,根据JIT编译器的逻辑,一切都以元数据的形式存储在内存中,后续处理必须在内存中进行
关于JIT编译器的工作以及.NET的工作,你可以阅读一篇精彩的book
Jeffrey Richter
。