提高WPF控件加载资源的性能

时间:2012-05-01 09:59:15

标签: c# .net wpf wpf-controls devexpress

我目前在应用程序中大量使用DevExpress控件。控件很棒,加速了开发时间(因此,我不想放弃它们)但是,我的性能有一些问题。

我的应用程序是Shell / Modules / Views& ViewModels应用程序(它遵循您在Prism中找到的许多设计模式)。

当第一次加载视图时,显示需要很长时间(在我的一些用户使用慢速计算机的PC上,我们正在谈论5秒以上的挂起)。显然需要的时间取决于DX控件的使用情况(应用程序之前没有看过多少个控件)。

当你破坏视图并重新打开它时,它会在不到一秒的时间内打开。我的测试用例/性能配置文件中的ViewModel每次都重新创建 - 因此在我的代码中,在视图调用之间没有共享状态(没有单例注入对象)。

经过一些讨论和研究后,我似乎已经将问题缩小到按需加载DX控件的模板文件。 这里有一个主题: http://www.devexpress.com/Support/Center/Issues/ViewIssue.aspx?issueid=Q382256 参考: http://www.devexpress.com/Support/Center/p/B201967.aspx& DevExpress controls for WPF load time 这些线程中描述的解决方案是在启动时显示加载指示器或使用带有控件的隐藏窗口。这些选项都不是我想要做的(当我尝试一个简单的例子时,隐藏的窗口选项似乎没有获得太多的性能,有趣的是 - 这也表明我可能会遗漏一些东西)。

我希望做的是在后台线程上预加载我知道我需要的模板文件。有什么方法可以在WPF中做到这一点吗? (我认为这更像是一个普通的WPF而不是DevExpress的东西 - 即使它是需要在DX库本身实现的东西)。

对于我或DevExpress的工作人员有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以在后台线程中执行的操作是预加载所有必需的程序集。还要确保它们是固定的。需要从UI线程初始化UI控件。