aplicação WPF não está fechando corretamente
-
03-07-2019 - |
Pergunta
Eu estou chamando Application.Current.Shutdown()
de uma classe que é obrigado a XAML janelas com ObjectDataProvider
, mas a aplicação não está fechando. Alguém pode me ajudar a entender por quê? Meu aplicativo não está fechando completamente depois da minha janela principal é fechada, ele não desaparecer da lista de processos do gerenciador de tarefas.
Solução
Você criou quaisquer tópicos para fazer processamento em segundo plano? Se você tem, certifique-se de definir a propriedade .IsBackground
sobre eles, ou eles podem manter o aplicativo em execução
Outras dicas
Tente Environment.Exit(0)
vez
Não se esqueça de acrescentar o seguinte:
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
Espero que isso ajude.
Se você tem várias janelas ou caixas de diálogo em seu aplicativo, você pode precisar para fechar cada uma delas explicitamente.
Fechar diálogos com:
_myDialog.Close ();
Feche todas as janelas:
foreach(var window in Application.Current.Windows.ToList())
{
window.Close();
}
Eu tive o mesmo problema, o processo de aplicação não pára embora a aplicação fechado.
No meu caso eu abriu uma janela de um BackgroundWorker (código abaixo)
BackgroundWorker BG = new BackgroundWorker();
BG.DoWork += new DoWorkEventHandler(BG_DoWork);
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem
BG.RunWorkerAsync();
instanciar a janela antes de executar o BackgroundWorker não parece ser o problema, mas apagando a linha a aplicação fechado corretamente
Eu abro minha janela do BackgroundWorker mas usando a rosca principal (código abaixo)
View.Dispatcher.BeginInvoke(new Action(delegate()
{
StockMinWindow MinWindow = new StockMinWindow(StockMinList);
MinWindow.Owner = View;
MinWindow.ShowDialog();
}));
Hope isso ajuda.
Eu tive um problema em que o aplicativo não iria encerrar mesmo quando a janela principal foi fechada. Descobriu-se que eu tinha feito Hide () na tela inicial, em vez de Close () para que ele ainda estava à espreita no fundo mantendo a aplicação vivo.