Приложение WPF не закрывается правильно

Я звоню Application.Current.Shutdown() из класса, который связан с окнами XAML с ObjectDataProvider, но приложение не закрывается. Может ли кто-нибудь помочь мне понять, почему? Мое приложение не закрывается полностью после закрытия главного окна, оно не исчезает из списка процессов диспетчера задач.

6 ответов

Решение

Вы создали какие-либо темы для фоновой обработки? Если у вас есть, не забудьте установить .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();
}

У меня была проблема, когда приложение не закрывалось, даже когда главное окно было закрыто. Оказалось, что я сделал 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();
 }));

Надеюсь, поможет.

Другие вопросы по тегам