当前位置:  开发笔记 > 编程语言 > 正文

WPF只能打开一个窗口吗?

如何解决《WPF只能打开一个窗口吗?》经验,为你挑选了1个好方法。

假设在WinForms项目中有两个项目,一个WinForms项目和一个WPF项目,以下代码在Main()中并删除Application.Run没有问题:

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

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



1> Ray..:

您需要像这样更改ShutdownMode

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将关闭打开的第一个窗口作为关闭应用程序.虽然循环中的代码将继续运行.

某些应用程序的生命周期可能不依赖于主窗口或最后一个窗口何时关闭,或者根本不依赖于窗口.对于这些场景,您需要将ShutdownMode属性设置为OnExplicitShutdown,这需要显式的Shutdown方法调用来停止应用程序.否则,应用程序将继续在后台运行.

MSDN:ShutdownMode属性

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有