gpt4 book ai didi

c# - 启动 WPF 应用程序时的 App_Startup() VS OnStartup()

转载 作者:行者123 更新时间:2023-12-05 00:58:09 30 4
gpt4 key购买 nike

我正在启动一个新的 WPF 项目,我需要在应用程序启动时进行照明。

我查看了 2 个不同的 WPF 项目以了解如何开始。

  • 第一个从App.xaml.cs文件中的void App_Startup(object sender, StartupEventArgs e)方法开始,直接从App调用.xaml 文件 (Startup="App_Startup")。
  • 另一个从App.xaml.cs文件中的protected override void OnStartup(StartupEventArgs e)方法开始。

除此之外,当我开始我的 WPF 项目时,默认代码模板以第三种方式开始,即 App.xaml 中的 StartupUri="MainWindow.xaml" > 文件。

这三种方式有什么区别?

最佳答案

Startup 是由 Application 基类的 OnStartup 方法引发的事件,如您在 reference source 中所见。 .这是它的实现方式:

protected virtual void OnStartup(StartupEventArgs e)
{
VerifyAccess();

StartupEventHandler handler = (StartupEventHandler)Events[EVENT_STARTUP];
if (handler != null)
{
handler(this, e);
}
}

因此,如果您在 App 类中重写 OnStartup 并调用 base.OnStartup(e),则将引发事件并附加任何事件处理程序将被调用。是在事件处理程序中实现逻辑还是直接在重写的 OnStartup 中实现逻辑取决于个人或应用程序特定的偏好。没有关于为什么一个应该比另一个更好的建议。

当涉及到 StartupUri 时,只有当您只想在启动时立即显示默认窗口并且您没有任何自定义初始化逻辑时,设置它才有意义。

在企业应用程序中,通常有某种 Bootstrap 来设置应用程序及其依赖项,并以编程方式创建和显示主窗口,而不是使用 StartupUri 属性。

关于c# - 启动 WPF 应用程序时的 App_Startup() VS OnStartup(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58604846/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com