【问题标题】:Process exit on closing WPF application [closed]关闭 WPF 应用程序时退出进程[关闭]
【发布时间】:2020-05-08 22:19:03
【问题描述】:

使用

托管 WPF 应用程序
System.Diagonistics.Process

我已经订阅了进程的退出事件。我想知道窗口的关闭如何触发退出事件。

【问题讨论】:

  • 如果它是主窗口,我假设它会自动触发进程退出。你看到别的了吗?
  • 是的,它是一个主窗口。但是想知道窗口关闭和进程之间的关系。进程如何知道窗口已关闭并且进程必须存在?这种沟通是如何发生的。基本上想知道内部原理
  • 不是内部结构,而是定义何时关闭的属性:Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
  • 嗯,这是一个相当广泛的问题。从这里开始阅读:stackoverflow.com/questions/5071137/…
  • 谢谢 rene1。将通过共享链接

标签: c# wpf


【解决方案1】:

Main方法中对Application.Run()的调用返回时,进程退出。

Application.Run() 依次调用Dispatcher.Run(),这会保持调度程序循环运行,直到框架调用App.CriticalShutdown,假设App.ShutdownMode 设置为ShutdownMode.OnLastWindowCloseShutdownMode.OnMainWindowClose。否则,您将明确关闭。

如果您查看source code,您会看到一个示例,说明如何从Window 类调用App.CriticalShutdown

if (((App.Windows.Count == 0) && (App.ShutdownMode == ShutdownMode.OnLastWindowClose))
    || ((App.MainWindow == this) && (App.ShutdownMode == ShutdownMode.OnMainWindowClose)))
{
    App.CriticalShutdown(0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2011-07-12
    相关资源
    最近更新 更多