C# WPF只能打开一个窗口?

C# WPF只能打开一个窗口?,c#,.net,wpf,C#,.net,Wpf,假设有两个项目,一个WinForms项目和一个WPF项目,在WinForms项目中,以下代码位于Main()中并删除应用程序没有问题。运行: while (true) { Thread.Sleep(1000); Form1 window = new Form1(); window.Show(); Thread.Sleep(1000); windo

假设有两个项目,一个WinForms项目和一个WPF项目,在WinForms项目中,以下代码位于Main()中并删除应用程序没有问题。运行:

        while (true)
        {
            Thread.Sleep(1000);
            Form1 window = new Form1();
            window.Show();
            Thread.Sleep(1000);
            window.Close();
        }
但是,在WPF应用程序中,删除StartupUri=“Window1.xaml”,然后创建:

    public App()
    {
        while (true)
        {
            Thread.Sleep(1000);
            Window window = new Window();
            window.Show();
            Thread.Sleep(1000);
            window.Close();
        }
    }

程序无限循环,但窗口只打开一次?

传统上,如果删除StartupUri,则应在应用程序中加载主窗口。Startup事件

public App() 
{
  Startup += App_Startup
}

public void App_Startup(object sender, StartupEventArgs e)
{
  while (true)
  {
    Thread.Sleep(1000);
    MainWindow = new Window();
    MainWindow.Show();
    Thread.Sleep(1000);
    MainWindow.Close();
  }
}

尽管如此,我也不确定这是否有效。你到底想做什么?

你需要像这样改变关机模式

public App()
{
    this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
    while (true)
    {
        Thread.Sleep(1000);
        Window window = new Window();
        window.Show();
        Thread.Sleep(1000);
        window.Close();
    }
    //Will never get here with this sample code,
    //but this would be how you close the app.
    this.Shutdown();

}
否则,WPF将关闭打开的第一个窗口视为关闭应用程序。尽管循环中的代码将继续运行

某些应用程序的生存期可能会延长 不依赖于主 窗口或最后一个窗口已关闭,或 可能不依赖于当前的windows 全部的对于这些场景,您需要 将ShutdownMode属性设置为 OnExplicitShutdown,它需要 显式关闭方法调用停止 应用程序。否则 应用程序继续在中运行 背景


这也不行。启动事件args接受StartupEventArgs。没有恶意,在单独的线程上,我正在检查.XAML文件是否已更新。如果有,我想使用XamlReader.Load(fileStream)重新加载主窗口;非常感谢。我遇到了这样的问题:显示一个模式登录对话框,然后WPF在主窗口显示之前在没有任何消息或异常的情况下退出。