Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在App()构造函数中显示对话框会阻止WPF应用程序显示?_C#_Wpf - Fatal编程技术网

C# 为什么在App()构造函数中显示对话框会阻止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"); } } } 应用程序将仅显示

我使用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
    {
        static App()
        {
            MessageBox.Show("foo", "bar");
        }
    }
}

它将能够启动主窗口


有人能帮我理解第一种方法的错误吗?

这两种方法都不是好主意。你不应该阻止构造函数。静态不阻塞的原因是它独立于实例化应用程序类运行。最好重写
Application.OnStartup()
,以执行此类操作。构造函数仅用于初始化类(静态)或实例(非静态)。