locked
Как правильно выйти из приложения? RRS feed

  • Вопрос

  • Как правильно выйти из приложения? Мне надо выйти из него, находясь в App.xaml.cs.

    Знаю такой способ:

    App.Quit();

    ------------------------------------------------------

    private
    class QuitException : Exception { }

    public static void Quit()
    {
        throw new QuitException();
    }

    private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (e.ExceptionObject is QuitException)
            return;

        if (System.Diagnostics.Debugger.IsAttached)
            System.Diagnostics.Debugger.Break();
    }
    4 марта 2013 г. 12:37

Ответы

  • Тогда в чем проблема?

    Пишут, что такой выход из приложения генерирует ошибку, которая в статистику приложения записывается, и её видно в Центре разработчика. Я не проверял статистику. Но из приложения выходит, это точно. :-)

    На всякий случай повторяю этот способ:

    App.Quit();

    ------------------------------------------------------

    private
    class QuitException : Exception { }

    publicstaticvoid Quit()
    {
    thrownew QuitException();
    }

    privatevoid Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
    if (e.ExceptionObject is QuitException)
    return;

    if (System.Diagnostics.Debugger.IsAttached)
            System.Diagnostics.Debugger.Break();
    }

                        
    • Помечено в качестве ответа Andrey Solopko 22 марта 2013 г. 18:11
    • Изменено Andrey Solopko 22 марта 2013 г. 18:14
    22 марта 2013 г. 18:11

Все ответы

  • Здравствуйте!

    Посмотрите статью по этой гиперссылке, в ней приводится пример программного закрытия приложения.

    5 марта 2013 г. 14:18
  • Посмотрите статью по этой гиперссылке, в ней приводится пример программного закрытия приложения.


    Это не то. Мне надо выйти, находясь в App.xaml.cs.
    18 марта 2013 г. 12:21
  • Посмотрите статью по этой гиперссылке, в ней приводится пример программного закрытия приложения.


    Это не то. Мне надо выйти, находясь в App.xaml.cs.

    Вот по Вашему вопросу:

    Shutting down a WPF application from App.xaml.cs

    Application.ShutdownMode Property

    20 марта 2013 г. 13:18
  • Привет

    А где именно в App.xaml.cs вы хотите вставить выход/условие выхода? Если вам нужно проверять что-то при запуске приложения - cделайте это в событии Application_Launching, либо можно подписаться на событие Navigating у RootFrame.

    Посмотри статью Windows Phone 7 – Check if first run как пример


    Для связи [mail]

    • Предложено в качестве ответа Abolmasov Dmitry 20 марта 2013 г. 18:11
    20 марта 2013 г. 18:11
  • Вот по Вашему вопросу: ...

    WPF - это совсем не то. Я уже раньше Адолмасову Д. об этом писал, когда он мне предлагал ответы из WPF.
    22 марта 2013 г. 10:51
  • А где именно в App.xaml.cs вы хотите вставить выход/условие выхода? Если вам нужно проверять что-то при запуске приложения - cделайте это в событии Application_Launching, либо можно подписаться на событие Navigating у RootFrame.

    Посмотри статью Windows Phone 7 – Check if first run как пример

    Мне надо выйти из приложения, когда я в приложении нахожусь (не при запуске). А в App.xaml.cs, потому что у меня там событие возникает. Ничего лучше, чем в самом начале я описал, я не нашел.
    22 марта 2013 г. 10:56
  • Доброго дня,

    Действительно не досмотрел, извиняюсь, а по Вашему вопросу -  для silverlight приложения другого варианта нет. Тот который Вы нашли предоставлен и в других темах, как самый "мягкий" вариант с использованием исключения. Больше нечего добавить как мне кажется )

    • Предложено в качестве ответа Abolmasov Dmitry 22 марта 2013 г. 12:38
    • Отменено предложение в качестве ответа Andrey Solopko 22 марта 2013 г. 18:11
    22 марта 2013 г. 11:18
  • Тогда в чем проблема? Создавайте в этом событии экземляр QuitException и приложения должно завершиться. Других вариантов закрытия приложения нет. API не предоставляет такого метода, т.к. система достаточно умно оперирует ресурсами и сворачивание приложения пользователем - достаточно для его "закрытия"

    Для связи [mail]

    22 марта 2013 г. 12:40
  • Тогда в чем проблема?

    Пишут, что такой выход из приложения генерирует ошибку, которая в статистику приложения записывается, и её видно в Центре разработчика. Я не проверял статистику. Но из приложения выходит, это точно. :-)

    На всякий случай повторяю этот способ:

    App.Quit();

    ------------------------------------------------------

    private
    class QuitException : Exception { }

    publicstaticvoid Quit()
    {
    thrownew QuitException();
    }

    privatevoid Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
    if (e.ExceptionObject is QuitException)
    return;

    if (System.Diagnostics.Debugger.IsAttached)
            System.Diagnostics.Debugger.Break();
    }

                        
    • Помечено в качестве ответа Andrey Solopko 22 марта 2013 г. 18:11
    • Изменено Andrey Solopko 22 марта 2013 г. 18:14
    22 марта 2013 г. 18:11