2009-05-01 230 views
7

我从与xaml窗口绑定的类中调用Application.Current.Shutdown()ObjectDataProvider,但应用程序未关闭。任何人都可以帮我理解为什么?在我的主窗口关闭后,我的应用程序没有完全关闭,它不会从任务管理器的进程列表中消失。WPF应用程序未正确关闭

回答

8

你有没有创建任何线程来做后台处理?如果有,请务必在其上设置.IsBackground属性,或者让它保持运行状态

+0

不,我不直接创建线程,可能是WPF在其他线程中绑定或objectdataprovider资源? – 2009-05-01 08:39:06

1

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

与关闭对话框:

_myDialog.Close();

关闭所有窗口:

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

我试试这个,它没有帮助,我知道问题在哪里,问题是当我调用shutdown()或close()时,objectdataprovider执行没有终止,我认为最好添加一个新问题,我现在要做的:) – 2009-05-01 10:16:13

+0

当然你可以用foreach替换for(i ...)?手动循环遍历循环是如此上个世纪:-) – 2009-05-03 20:37:18

25

尝试Environment.Exit(0)代替

4

不要忘了补充一点:

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

希望这有助于。

0

我有同样的问题,应用程序进程不会停止,虽然应用程序关闭。

在我的情况下,我从一个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(); 
})); 

希望它有帮助。

0

我有一个问题,即使主窗口关闭,应用程序也不会关闭。事实证明,我已经在启动画面上完成了Hide()而不是Close(),所以它仍然潜伏在保持应用程序活着的后台。

相关问题