Закрытие главного окна не разрешено

#c# #windows-runtime #uwp

#c# #windows-среда выполнения #uwp

Вопрос:

Я разрабатываю приложение UWP, которое охватывает несколько окон, таких как Microsoft Edge или Sticky Notes.

Мне удалось закрыть дочернее окно путем вызова Window.Current.Close() , но я не могу закрыть главное окно или базовое окно дочерних окон.

 Exception thrown: 'System.Runtime.InteropServices.COMException' in MyApp.exe
WinRT information: Closing main window is not allowed.
  

С другой стороны, мы можем запускать Microsoft Edge Windows и закрывать их независимо от порядка.

Есть ли какой-либо способ закрыть главное окно или изменить отношения родитель-потомок Windows?

Комментарии:

1. Главное окно является особенным: его закрытие завершает работу приложения. Если это то, что вы хотите сделать, используйте Application.Exit .

Ответ №1:

Выполните ApplicationView.GetForCurrentView().TryConsolidateAsync() в главном окне, чтобы закрыть его должным образом, как если бы вы закрыли его, нажав кнопку закрыть в строке заголовка. Если ваше приложение имеет только одно окно на экземпляр, вам следует предпочесть это Application.Exit() , поскольку этот метод приостанавливает работу приложения и Application.Exit() резко закрывает приложение. Кроме того, при закрытии приложения этим методом предыдущая позиция и размер вашего приложения запоминаются в отличие от for Application.Exit() .