【发布时间】:2019-03-25 03:46:24
【问题描述】:
更新
我已经更新了在应用程序中运行的代码示例 启动,并上传了性能配置文件结果的新图像。我愿意 不明白第一秒没有活动的原因。 这似乎是最重要的延迟,我想了解 如果这是 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();
}
更新 TcpView 没有显示任何网络流量(我没想到会这样)。关闭恶意软件可能不可行。我确实尝试使用 Jet Brains 分析器获取另一份报告,这表明几乎一秒钟的时间用于验证访问权限,这是否合理,试图在网上找到更多但没有得到任何结果。
【问题讨论】:
-
通常是抖动或磁盘导致启动延迟。但是您有充分的证据表明这里不是这种情况,外部代码不是过程的一部分,因此导致此延迟的诊断工具无法看到。暂时禁用已安装的反恶意软件产品,然后重试。接下来使用TcpView查看启动触发了什么样的网络流量。
-
@HansPassant,谢谢,明天我将尝试使用 TcpView 获取网络流量。不确定暂时禁用反恶意软件是否容易(考虑到所需的批准)。还有一种方法可以提前解析xaml(蓝色部分),还想知道绿色部分......我几乎没有代码,所以它来自第三方控件?可能会尝试和 ngen 它,不确定我会看到什么好处。
标签: c# wpf performance startup