为什么我的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()之后继续运行。
Shutdown停止Dispatcher处理,并关闭WPF所关注的应用程序,但实际上并不杀死当前线程。
在您的情况下,您需要阻止超出该调用的代码运行。一个简单的返回就足够了:
if (chooser.ShowDialog() == false)
{
Application.Current.Shutdown(0);
return;
}
else { //...
它不会立即终止你的进程,它是一个受控的关闭。
如果你想(不推荐)立即杀死
Process.GetCurrentProcess().Kill();