Приложение WPF не закрывается правильно
Я звоню Application.Current.Shutdown()
из класса, который связан с окнами XAML с ObjectDataProvider
, но приложение не закрывается. Может ли кто-нибудь помочь мне понять, почему? Мое приложение не закрывается полностью после закрытия главного окна, оно не исчезает из списка процессов диспетчера задач.
6 ответов
Вы создали какие-либо темы для фоновой обработки? Если у вас есть, не забудьте установить .IsBackground
собственности на них, или они могут поддерживать приложение в рабочем состоянии
Не забудьте добавить это:
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
Надеюсь это поможет.
Если в вашем приложении несколько окон или диалогов, вам может потребоваться закрыть каждое из них явно.
Закрыть диалоги с:
_myDialog.Close ();
Закройте все окна:
foreach(var window in Application.Current.Windows.ToList())
{
window.Close();
}
У меня была проблема, когда приложение не закрывалось, даже когда главное окно было закрыто. Оказалось, что я сделал Hide() на заставке вместо 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();
}));
Надеюсь, поможет.