【问题标题】:WPF Application takes too long to startWPF 应用程序启动时间过长
【发布时间】:2012-01-22 00:45:32
【问题描述】:

我正在创建一个使用 Fluent 库的 WPF 应用程序。

在我的装有 Windows 7、2GB RAM 和 AMD 三核处理器的计算机上,双击程序图标后,大约 1-2 秒后会显示 Splash 图像。

但在我兄弟的旧电脑上,装有 Windows XP、512MB RAM 和 Intel Celeron 2.0 GHz 处理器(单核),双击程序图标后,首先运行了一个名为 PresentationFontCache.exe 的进程,它几乎 100% 使用了CPU 几秒钟。并且显示初始 Splash 图像所需的总时间几乎是 30 秒(或更多)。

我不希望某些用户必须等待 30 秒才能显示启动图像,而要等待大约 7-8 秒才能加载应用程序。 (我的应用程序加载过程需要 7-8 秒)

另外我认为1-2秒对于只显示初始SplashImage来说太高了,它应该立即显示。

如何解决这个问题?

【问题讨论】:

  • 性能问题可能由多种原因引起。您应该提供更多信息,例如您已运行的性能测试或正在运行的代码。
  • 可能是你兄弟的电脑上的显卡快得多,或者你的电脑是一台内置显卡的笔记本电脑,没有自己强大的 CPU
  • @sll : 显示一个静态的PNG文件需要这样吗?
  • 谁知道真正的问题是什么,也许它根本与显示 PNG 无关,问题就在幕后
  • 你是否包括任何代码签名证书?

标签: c# .net wpf vb.net fluent


【解决方案1】:

但在我兄弟的旧电脑上,装有 Windows XP、512MB RAM 和 Intel Celeron 2.0 GHz 处理器

是的,猜猜看 - 启动 internet exlporer 也需要很长时间。这不是电脑,是垃圾。至少 1gb 内存会有所帮助。 WPF 应用程序不是超低资源的应用程序,它们是为现代操作系统设计的。

我不希望某些用户必须等待 30 秒才能显示启动图像

使用 .NET 标准闪存机制(甚至在运行时完全初始化之前加载)。

http://www.abhisheksur.com/2010/05/creating-splash-screen-without-code.html

然后加载 WPF 代码。

【讨论】:

  • 我使用了 .NET 标准的 flash 机制,并且闪屏显示 30 秒后。有没有办法至少更快地显示启动画面?
  • 还有一件事:为什么进程“PresentationFontCache.exe”在我兄弟的计算机上运行,​​但在我尝试运行我的应用程序时却没有在我的计算机上运行?
【解决方案2】:

听起来您可以分析您的应用程序的性能,以查看您的瓶颈在哪里并找出导致它的原因,以便您知道在代码中修复什么以优化性能。

您可以使用类System.Diagnostics 命名空间。比如 PerformanceCounter 类等。

如果你有钱可以使用RedGate Develper Bundle for .NET 它有性能分析器、内存分析器等。

还有其他 cheaper 替代品。

【讨论】:

    【解决方案3】:

    Presentationfontcache.exe 是一个来自 Microsoft Corporation 的 Windows Presentation Foundation Service,属于 .NET Framework。它通常使用高 CPU。

    您可以尝试停止服务,方法是删除它创建的文件:Windows\ServiceProfiles\LocalService\AppData\Local\FontCache4.0.0.0.dat 并重新启动服务以检查是否有帮助。

    【讨论】:

    • 为什么当我想运行我的应用程序时该进程运行??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多