Приложение UWP всегда выходит с ненулевым кодом возврата - PullRequest
4 голосов
/ 15 марта 2019

Насколько я понимаю, приложение, которое не завершает работу и возвращает код ошибки 0, не завершилось правильно. Тем не менее, любое приложение UWP, которое я создаю, даже само по умолчанию, заканчивается кодом ошибки 1 каждый раз. Более того, его главный класс Dispose() и деструктор никогда не называются. Это ожидаемое поведение?

Чтобы воспроизвести, я просто создал приложение UWP по умолчанию:

  • Щелкните правой кнопкой мыши Решение -> Добавить -> Новый проект ...
  • Затем в Другие языки -> Visual C # -> Windows Universal -> «Пустое приложение (Universal Windows)»
  • Затем создайте и разверните приложение.

Если вы сейчас запустите, а затем закроете приложение, кажется, что оно принудительно завершается. Последний вывод, который я получаю:

The thread 0x35a4 has exited with code 0 (0x0).
The thread 0x34f4 has exited with code 1 (0x1).
The program '[3376] App1.exe' has exited with code 1 (0x1).

Итак, я понимаю, что это означает, что поток завершается с ошибкой, а затем происходит сбой приложения Это правильно, и это плохо?

Более того, я добавил следующий код к основной App.xaml.cs:

    ~App()
    {
        System.Diagnostics.Debug.WriteLine("Calling destructor");
    }

    // (Implement Disposable interface)
    public void Dispose() 
    {
        System.Diagnostics.Debug.WriteLine("Calling dispose");
    }

Никто никогда не называется. Что происходит?

Ответы [ 2 ]

3 голосов
/ 18 марта 2019

Я хотел бы предложить вам поиграть с UWP жизненными циклами и событиями. Насколько я понимаю, приложение, когда оно закрыто пользователем, переходит в режим приостановлено , а затем оно прекращается . Жизненный цикл приложения UWP проходит через ряд этапов, на которых он даже входит в и оставляет фон во время запуска или приостанавливает . В App.Xaml.Cs вы можете начать играть с событиями и понять, как работает жизненный цикл приложения.

0 голосов
/ 18 марта 2019

Я выполнил ваши шаги, чтобы создать пустой проект.Запуск его дал мне: enter image description here

Ни поток, ни приложение не закрылись с кодом выхода.То, что вы испытываете, не является нормальным и считается проблемой, особенно если поток завершает работу всего приложения.Я бы удалил VS17 и любые библиотеки и затем сделал бы чистую установку.

Вы пробовали шаблон проекта, не относящийся к UWP?

...