App构造函数和app.Onstartup有什么区别?

What is the difference between App constructor and app.Onstartup?

我正在对我的应用程序进行一些重构,我想在 app.xaml.cs 中收集全局初始化。

我在构造函数中有一些,其他在 OnStartup

OnStartup 似乎是在构造函数之后调用的。

这两种方法有什么区别?我应该把所有代码放在哪里?

区别不大,从the source of System.Windows.Application.

可以看出

OnStartup 方法是从构造函数调用的最后一个方法。

如果您实现自己的构造函数,则 OnStartup 已经被触发。此外,在特殊情况下,您将覆盖自己的 OnStartup 实现可能会丢弃您已经拥有的实现(如果您不调用 base)。

就我个人而言,我仍然会选择 OnStartup,但我想这并没有那么重要。如果您不知道真正的执行顺序,将两者混合在一起可能会很危险。