加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:28:23 所属栏目:百科 来源:网络整理
导读:我希望能够在C#项目中创建几百个winrt控件实例(搜索结果控件).问题是这样做需要太长时间(十分之一秒或更糟),并且必须在UI线程上完成,从而在显示结果时产生停顿和延迟. 现在我通过在启动期间预先缓存许多控件实例来绕过这个问题.这种方法有效,但会影响启动时
我希望能够在C#项目中创建几百个winrt控件实例(搜索结果控件).问题是这样做需要太长时间(十分之一秒或更糟),并且必须在UI线程上完成,从而在显示结果时产生停顿和延迟.

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读