新窗口后程序不会停止

MTR*_*MTR 5 .net c# wpf

也许是C#,WPF,.NET 4.0的一个愚蠢的问题:

如果我在窗口派生类上执行新操作并且不在此窗口上调用ShowDialog,则我的程序在关闭时不再关闭.

例:

        Window d = new Window();
        //d.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

我不想显示窗口,我只想将此对象用于某些目的.那么为了让我的程序在之后关闭,我该怎么办呢?

Cod*_*ray 7

您很可能已将应用程序配置为在其所有窗口都已关闭时关闭,并且通过创建一个永不关闭的新窗口,您的应用程序永远不会关闭.

此设置由Application.ShutdownMode属性控制,该属性指定导致调用Shutdown方法的条件.基本上,您有三种选择.

  1. 第一个,正如您遇到的那样,除非并且直到它创建的所有窗口都已关闭,否则不会关闭您的应用程序.它们是由用户关闭还是通过调用Close方法以编程方式关闭无关紧要.

    通过将Application.ShutdownMode属性设置为指定此选项OnLastWindowClose.

  2. 第二种方法利用了这样一个事实,即几乎所有应用程序都有一个"主"窗口(这是您在启动应用程序时显示的第一个窗口),并且运行时会自动关闭整个应用程序(以及所有子窗口)主窗口关闭.同样,窗口是由用户关闭还是通过代码关闭窗口无关紧要.

    通过将Application.ShutdownMode属性设置为指定此选项OnMainWindowClose.

  3. 第三个选项实质上表明您将手动管理事物.在您通过代码自己调用Shutdown方法之前,它不会关闭应用程序.

    通过将Application.ShutdownMode属性设置为指定此选项OnExplicitShutdown.

在这种情况下,我的建议是设置第二个选项,并在用户关闭主窗口时自动关闭应用程序.这将防止任何可能仍然显示的流浪儿童窗口阻止您的应用程序关闭.这消除了编写Stecya答案中显示的代码的需要,并让运行时自动为您处理所有这些.