试图提高WPF应用程序的启动性能

时间:2019-03-25 03:46:24

标签: c# wpf performance startup

  

更新

     

我已更新了在应用程序中运行的代码示例   启动,并上传了性能配置文件结果的新图像。我做   不了解第一秒没有活动的原因。   这似乎是最重大的延迟,我想了解   这是WPF还是点网框架在做什么?

     

结束更新

在UI线程利用率图中,我可以看到在磁盘IO(蓝线)之前,大部分还是空白+应用代码(绿色)。如何找出空白区域中发生的事情。

我看到的另一件事是在加载应用程序时(蓝色区域)正在解析XAML。 xaml存在于另一个项目中,在此引用。我想知道是否有任何方法可以预解析xaml,因为它在另一个项目中。

我知道这个问题有点太广泛了,但是有关如何进行操作或指向正确工具(最好是免费工具)的建议将是有价值的。

enter image description here

我的App.XAML仅包含:

    protected override void OnStartup(StartupEventArgs e)
    {
        new Entry().Show();
        base.OnStartup(e);
    }

条目的XAML是

<telerik:RadWindow x:Class="Some.Namespace.Entry"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
        xmlns:local="clr-namespace:Some.Namespace"
        mc:Ignorable="d"
        Header ="Header" Width="1700" Height="900"
        telerik:StyleManager.Theme="Windows8" WindowStartupLocation="CenterOwner">

</telerik:RadWindow>

为此提供的代码:

public Entry()
        {
            RadWindowInteropHelper.SetAllowTransparency(this, false);
            InitializeComponent();
        }
  

更新   TcpView没有显示任何网络流量(我没想到这一点)。关闭恶意软件可能不可行。我确实尝试使用Jet Brains Profiler来获取另一份报告,这表明花了将近一秒钟的时间来验证访问权限,这是合理的,试图在网上找到更多信息但没有得到任何结果。

enter image description here

1 个答案:

答案 0 :(得分:0)

您是否已在发布模式下运行该应用程序?仅此一项就可以缩短启动时间。

我过去做过的一个粗略的事情是通过调试启动应用程序,并在Visual Studio中不断命中中断。如果调试器总是停在同一地点,那就是问题所在。希望它在您自己的代码中,因此您可以更改它。

如果您可以访问用于分析代码的探查器,请尝试使用它。 Visual Studio附带了一个,但您只能将其与某些许可证一起使用。