微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 有效地创建了winrt地铁控制的许多实例

我希望能够在C#项目中创建几百个winrt控件实例(搜索结果控件).问题是这样做需要太长时间(十分之一秒或更糟),并且必须在UI线程上完成,从而在显示结果时产生停顿和延迟.

现在我通过在启动期间预先缓存许多控件实例来绕过这个问题.这种方法有效,但会影响启动时间(分析显示启动时40%的处理器时间用于缓存这些控件)并创建要管理的详细信息,例如缓存的大小.

我认为问题在于,每次控件实例化时,冗余工作(如重新解析XAML)都是由底层框架完成的.也许有办法避免重复这项工作?也许我可以廉价地克隆一个现有的控件?有人有想法吗?

解决方法

>您可以在并行线程中执行预缓存.对多核处理器的启动时间影响较小
> searchresult.memberwiseclone将给你浅拷贝.它可能更快,不确定
>您可以只使用一个搜索结果并在使用前用正确的数据填充它吗?在这种情况下,不需要创建很多.只需使用一个作为可重复使用的容器.
>如果将控件添加到父表单中,则可以使用时间

> suspendlayout / resumelayout(这是win32)
>完成后,将父设置为不可见,然后返回可见状态

>还有另一种方法可以更快地完成同样的事情吗? (竞争控制,3D派对等)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐