c# - 试图提高 WPF 应用程序启动性能
问题描述
更新
我更新了应用程序启动时运行的代码示例,并上传了性能配置文件结果的新图像。我不明白第一秒没有活动的原因。这似乎是最重要的延迟,我想了解这是 WPF 还是 dot net 框架在做什么?
结束更新
在 UI 线程利用率图中,我可以看到在磁盘 IO(蓝线)之前再次大部分是空白 + 应用程序代码(绿色)。我怎样才能找出空白区域发生了什么。
我看到的另一件事是在加载应用程序时正在解析 XAML(蓝色区域)。xaml 存在于不同的项目中,并在此处引用。我想知道是否有任何方法可以预解析 xaml,因为它位于不同的项目中。
我知道这个问题有点太宽泛了,但是关于如何进行的建议或指向正确工具(最好是免费的)的建议将很有价值。
我的 App.XAML 仅包含:
protected override void OnStartup(StartupEventArgs e)
{
new Entry().Show();
base.OnStartup(e);
}
而Entry的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();
}
UPDATE TcpView 没有显示任何网络流量(我没想到会这样)。关闭恶意软件可能不可行。我确实尝试使用 Jet Brains 分析器获取另一份报告,这表明几乎一秒钟的时间用于验证访问,这是否合理,试图在网上找到更多但没有得到任何结果。
解决方案
您是否在发布模式下运行该应用程序?仅此一项就可以改善启动时间。
我过去做过的一件粗暴的事情是通过调试启动应用程序,并在 Visual Studio 中不断地中断。如果调试器总是停在同一个地方,那就是问题所在。希望它在您自己的代码中,以便您能够更改它。
如果您有权使用分析器来检测您的代码,请尝试使用它。Visual Studio 附带一个,但您只能通过某些许可证使用它。
推荐阅读
- java - Java - 带有冲突正则表达式的 string.split
- jsonschema - 如何使用 JSON Schema 有条件地指定默认值
- c# - Powershell addscript和从C#调用不在命令行上显示结果
- java - 尝试使用反射获取对字段的引用时出现 IllegalArgumentException
- javascript - 页面加载时在 Javascript/Jquery 中对引导模态体元素进行排序
- c++ - 位摆弄:否定一个int,只有当它是负数时
- javascript - 鼠标按下附加项目
- c# - 批量重命名重构
- python - Cython 函数中高度可变的执行时间
- python-3.x - 如何从 Web 应用程序 WindGuru 中检索 html 源代码