代码之家  ›  专栏  ›  技术社区  ›  Paul

WPF只能打开一个窗口?

  •  2
  • Paul  · 技术社区  · 17 年前

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

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

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

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

    2 回复  |  直到 17 年前
        1
  •  9
  •   Ray    17 年前

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

    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,它需要 显式关闭方法调用停止 应用程序继续在中运行 出身背景

    MSDN:ShutdownMode Property

        2
  •  0
  •   bendewey    17 年前

    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();
      }
    }
    

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