C# 为什么在App()构造函数中显示对话框会阻止WPF应用程序显示?
我使用VisualStudio创建了一个新的wpf应用程序。我为应用程序添加了一个构造函数:C# 为什么在App()构造函数中显示对话框会阻止WPF应用程序显示?,c#,wpf,C#,Wpf,我使用VisualStudio创建了一个新的wpf应用程序。我为应用程序添加了一个构造函数: using System.Windows; namespace WpfApplication { public partial class App : Application { App() : base() { MessageBox.Show("foo", "bar"); } } } 应用程序将仅显示
using System.Windows;
namespace WpfApplication
{
public partial class App : Application
{
App() : base()
{
MessageBox.Show("foo", "bar");
}
}
}
应用程序将仅显示消息框,然后在您关闭消息框后将不显示主窗口
但是,如果我将其设置为静态构造函数,如:
using System.Windows;
namespace WpfApplication
{
public partial class App : Application
{
static App()
{
MessageBox.Show("foo", "bar");
}
}
}
它将能够启动主窗口
有人能帮我理解第一种方法的错误吗?这两种方法都不是好主意。你不应该阻止构造函数。静态不阻塞的原因是它独立于实例化应用程序类运行。最好重写
Application.OnStartup()
,以执行此类操作。构造函数仅用于初始化类(静态)或实例(非静态)。