C# WPF应用程序启动非常缓慢

17

我编写了一个简单的 .net WPF 应用程序(只包含 2 个小窗口),但是它的启动速度太慢了-大约需要 10-20 秒钟!

分析工具显示:

  • Main->RunInternal(56%)
  • Main->RunInternal->ctor->LoadBaml(32%)

应用程序加载时间最长的部分是 Main->RunInternal 函数, 这不是我的函数,我不知道它们在做什么。能否优化它们的执行时间?

加载 Baml 标记占用了所有时间的 32%,但我的程序仅有 3 个 XAML 文件,它们包含不到 100 行代码。 为什么这个操作需要如此长的时间?

在询问问题之前,我已经阅读并尝试了这些技巧,但它们没有帮助我:

那么,我该如何加快应用程序的启动时间呢?

谢谢。

PS. 我已在两台类似的计算机上测试了此程序,结果是一样的。


1
性能优化并不是一件可以客观地进行的事情,没有真实的上下文很难做到。除非您提供一些代码,否则恐怕没有多少人能够帮助您。 - Sisyphe
1
有绑定错误吗?它们可能会严重减缓您的应用程序。 - Christian Sauer
没有任何绑定错误和警告... - Roman Nazarkin
2
在我的有限经验中,这只是WPF启动速度慢的问题,解决方法是添加一个启动画面,为用户提供一些指示。 - dbones
3个回答

4

请看上面评论中提到的文章。

我认为是第8个(Authenticode),但这取决于你引用了哪些程序集。


4
我按照所提到文章中的第8条建议进行了测试,这将我的应用程序启动时间从16-20秒缩短至3秒。 - Felix
2
这是指的 http://blogs.msdn.com/b/jgoldb/archive/2007/10/10/improving-wpf-applications-startup-time.aspx 吗?看起来那个链接已经不存在了。 - StayOnTarget

1
我有同样的问题。使用RunInternal进行Google搜索没有任何结果。然后,我尝试备份以前的代码并删除程序集和文件,直到只剩下一个窗口。然后它就可以工作了——启动时间从10秒缩短到1秒!这次,分析器仅显示System.Windows.Application.Run()而不是RunInternal。很奇怪的是,对于这台电脑,即使重新导入出错(慢)的版本,它也能正确运行!而我的笔记本电脑,没有经过上述修复,仍需要10秒以上才能启动程序。

1
我的问题在于项目本身位于网络驱动器上。因此,应用程序必须完成整个往返于距离我500英里的目标驱动器之间的操作,并编译所有内容 - 因此肯定需要花费很长时间。我看了其他问题,但在我的情况下,这是唯一的问题。
在尝试其他任何事情之前,请确保您的项目位于本地位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接