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

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

概述我希望能够在C#项目中创建几百个winrt控件实例(搜索结果控件).问题是这样做需要太长时间(十分之一秒或更糟),并且必须在UI线程上完成,从而在显示结果时产生停顿和延迟. 现在我通过在启动期间预先缓存许多控件实例来绕过这个问题.这种方法有效,但会影响启动时间(分析显示启动时40%的处理器时间用于缓存这些控件)并创建要管理的详细信息,例如缓存的大小. 我认为问题在于,每次控件实例化时,冗余工作(如 我希望能够在C#项目中创建几百个winrt控件实例(搜索结果控件).问题是这样做需要太长时间(十分之一秒或更糟),并且必须在UI线程上完成,从而在显示结果时产生停顿和延迟.

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

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

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

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

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

总结

以上是内存溢出为你收集整理的c# – 有效地创建了winrt地铁控制的许多实例全部内容,希望文章能够帮你解决c# – 有效地创建了winrt地铁控制的许多实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1234856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存