我从一个使用 ObjectDataProvider 绑定到xaml窗口的类调用 Application.Current.Shutdown(),但是应用程序没有关闭。谁能帮我理解为什么?在我的主窗口关闭后,我的应用程序没有完全关闭,它不会从任务管理器的进程列表中消失。

有帮助吗?

解决方案

您是否创建了任何线程来进行后台处理?如果有,请确保在它们上设置 .IsBackground 属性,否则它们可以使应用程序保持运行

其他提示

尝试 Environment.Exit(0)而不是

不要忘记添加:

private void Window_Closed(object sender, EventArgs e)
{
  Application.Current.Shutdown();
}

希望这有帮助。

如果您的应用程序中有多个窗口或对话框,则可能需要明确关闭每个窗口或对话框。

关闭对话框:

  

_myDialog.Close();

关闭所有窗口:

foreach(var window in Application.Current.Windows.ToList())
{
    window.Close();
}

我遇到了同样的问题,虽然应用程序已关闭,但申请流程并未停止。

在我的情况下,我从BackgroundWorker(下面的代码)中打开了一个窗口

BackgroundWorker BG = new BackgroundWorker();
BG.DoWork += new DoWorkEventHandler(BG_DoWork);
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem 
BG.RunWorkerAsync();

在运行BackgroundWorker之前实例化窗口似乎不是问题,但通过擦除应用程序正确关闭的行

我从BackgroundWorker打开我的窗口,但使用主线程(下面的代码)

 View.Dispatcher.BeginInvoke(new Action(delegate()
 {
   StockMinWindow MinWindow = new StockMinWindow(StockMinList);
   MinWindow.Owner = View;
   MinWindow.ShowDialog();
 }));

希望它有所帮助。

我遇到一个问题,即使主窗口关闭,应用程序也不会关闭。原来我在启动画面上完成了Hide()而不是Close()所以它仍然潜伏在后台,让应用程序保持活着。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top