Приложение WPF закрывается некорректно
-
03-07-2019 - |
Вопрос
Я звоню Application.Current.Shutdown()
из класса, который привязан к xaml Windows с помощью ObjectDataProvider
, но приложение не закрывается.Кто-нибудь может помочь мне понять почему?Мое приложение не закрывается полностью после закрытия моего главного окна, оно не исчезает из списка процессов диспетчера задач.
Решение
Создавали ли вы какие-либо потоки для выполнения фоновой обработки?Если у вас есть, обязательно установите .IsBackground
собственность на них, или они могут поддерживать работу приложения
Другие советы
Попробуй Environment.Exit(0)
вместо этого
Не забудьте добавить это:
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
Надеюсь, это поможет.
Если в вашем приложении несколько окон или диалоговых окон, возможно, потребуется явно закрыть каждое из них.
Закройте диалоги с помощью:
_myDialog.Закрыть();
Закройте все окна:
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 (), поэтому он все еще скрывался в фоновом режиме, поддерживая работу приложения.