Как отложить закрытие окна в WPF - PullRequest
1 голос
/ 25 марта 2011

Я пытаюсь отложить закрытие окна в своем приложении.Что я здесь не так делаю?

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Убедитесь, что обратный вызов таймера возвращается в главном потоке диспетчера.Если нет, то, скорее всего, вы получите исключение, когда попытаетесь закрыть окно из другого потока.

Используйте splash.Dispatcher.CheckAccess(), чтобы убедиться, что вы находитесь в правильном потоке, а если нет, тогда используйте splash.Dispatcher.BeginInvoke((Action) () => splash.Close(), чтобыотправить вызов на основной поток.

Проверьте эту страницу , чтобы узнать больше

0 голосов
/ 23 июля 2018

Вот мое решение этой же проблемы:

 private async void CloseWindow()
 {
    await ClosingTasks();
 }

 private async Task ClosingTasks()
 {            
    await Task.Delay(2000);            
    this.Close();
 }

Где вы просто вызываете CloseWindow (), когда хотите закрыть текущее окно после заданной задержки 2000 мс.

0 голосов
/ 25 марта 2011

Существуют различные режимы выключения, если это окно закрыто и оно является последним, тогда приложение будет закрыто по умолчанию. Таким образом, вы можете либо убедиться, что вокруг все еще есть какое-то окно, либо изменить поведение выключения, установив для ShutdownMode значение, соответствующее вашим потребностям.

, например

Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
...