【发布时间】:2012-08-15 19:42:38
【问题描述】:
我希望能够在 C# 项目中创建数百个 winrt 控件(搜索结果控件)实例。问题是这样做需要很长时间(十分之一秒或更短),并且必须在 UI 线程上完成,从而造成显示结果的停顿和延迟。
现在我已经通过在启动期间预缓存许多控件实例来绕过这个问题。这种方法有效,但会影响启动时间(分析显示,接近启动的 40% 的处理器时间用于缓存这些控件)并创建要管理的细节,例如缓存的大小。
我认为问题在于,每次实例化控件时,冗余工作(例如重新解析 XAML)都是由底层框架完成的。也许有办法避免重复这项工作?也许我可以廉价地克隆现有控件?有人有想法吗?
【问题讨论】:
-
你有没有找到办法做到这一点?
-
@joe_coolish 我最终实现了自己的 UI 虚拟化。我在下面添加了一个自我回答。
标签: c# .net performance xaml microsoft-metro