【问题标题】:WPF Application very slow to load initial window when launched from Visual Studio从 Visual Studio 启动时,WPF 应用程序加载初始窗口非常慢
【发布时间】:2013-08-30 07:14:42
【问题描述】:

我有一个相对简单的 WPF 应用程序。每当我从 Visual Studio 2012 中启动它(在调试或发布模式下)时,启动速度非常慢(实际上可能需要几分钟)。 已经完成了一些自定义初始化工作(从 SQLite 数据库读取文件和加载数据),但它应该在 1 秒内完成,因为它比我通过单击 Debug/myapp.exe 文件直接启动应用程序所需的时间更少。

奇怪的行为是,如果我中断执行并立即继续(IDE 中的“播放”按钮),窗口将立即加载。 如果我按 F5“开始调试”会出现问题,但如果我按 Ctrl+F5“不调试就开始”,它会立即加载。

我在 x86 模式下使用 .NET 4.5。

我尝试使用 dotTrace 性能分析器进行分析,但无法通过这种方式重现问题(它会立即加载)。

您知道造成这种情况的原因吗?

【问题讨论】:

  • 它是否仅在启动时或以后也很慢,例如当您继续单步执行代码时?
  • 仅在启动时,实际上甚至在 InitializeComponent() 被调用之前。
  • 你安装了VS update 3吗?
  • 您是否配置了符号服务器?可能是调试器加载了额外的符号。
  • 是的,我已经安装了 VS 更新 3。我已取消选中默认符号服务器。我还有其他 WPF 项目可以立即加载并共享大部分自定义初始化代码。

标签: c# wpf performance visual-studio debugging


【解决方案1】:

这种缓慢的可能性可能是由于打开了太多 WPF 跟踪设置。如果这问题,您可以判断,因为输出窗口将在项目启动时填充信息。

如果这您的问题,您可以通过转到

来调整您的跟踪设置

工具 > 选项 > 调试 > WPF 跟踪设置

找到正确的部分后,您可以关闭各种跟踪选项,启动应用程序时您应该会看到速度有所提高。

【讨论】:

  • 不幸的是,它们都已关闭,并且“输出”窗口中没有显示任何内容。
【解决方案2】:

代码中可能设置了大量的断点。打开Breakpoints 窗口(Debug->Windows)并将其全部关闭以查看是否是原因。 或者更好的是,您可以从光盘中删除 .suo 用户文件,该文件存储断点和会话设置。

另一个可能的原因是扩展程序出现故障。您可能想尝试禁用一些插件,看看效果是否更好。

另外,如果活动选项卡是图形窗口预览,我记得我体验过 WPF 应用程序从 VS 启动缓慢。

【讨论】:

    【解决方案3】:

    在我的情况下,问题是由于某种原因 VS 不缓存 System.Windows.Interactivity.dll 的符号,并且每次我启动调试会话时,它们都会从服务器下载。导航到 Tools -> Options -> Debugging -> Symbols 并选择带有空模块列表的 "Only specified modules" 解决了延迟问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2012-09-16
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多