为什么我的c# WPF程序在Application.Shutdown()之后继续执行行

本文关键字:之后 继续 执行 Shutdown Application 我的 WPF 程序 为什么 | 更新日期: 2023-09-27 18:17:56

这里是我弹出一个简单对话框("chooser")的代码片段。根据用户的输入,应用程序可能会终止。

    DPChooser chooser = new DPChooser(dataProvider);
    if (chooser.ShowDialog() == false)
        Application.Current.Shutdown(0);
    else
        ApplicationContext.Current.InitializeDataProviderAPI(chooser.DataProvider);
    }
    // more code continues here
    // THE PROBLEM:
    //     Even when Shutdown() above is called,
    //     the execution continues proceeding past here!

我已经在调试器中运行了它,所以我知道if的值为false,并且我知道正在调用Shutdown()。

那它为什么不关机呢?

注意:这不是一个线程的事情,我认为。我还没有在其他线程上开始任何事情。即使涉及到线程,我仍然不希望这个线程中的代码在Shutdown()之后继续运行。

为什么我的c# WPF程序在Application.Shutdown()之后继续执行行

Shutdown停止Dispatcher处理,并关闭WPF所关注的应用程序,但实际上并不杀死当前线程。

在您的情况下,您需要阻止超出该调用的代码运行。一个简单的返回就足够了:

 if (chooser.ShowDialog() == false)
 {
     Application.Current.Shutdown(0);
     return;
 }
 else { //...

它不会立即终止你的进程,它是一个受控的关闭。

如果你想(不推荐)立即杀死

Process.GetCurrentProcess().Kill();