Подтвердить что ты не робот

Закройте приложение Windows Phone 7

Есть ли возможность программно закрыть приложение Silverlight на Windows Phone 7?

4b9b3361

Ответ 1

Если вы пишете XNA Game, у вас будет доступ к явному методу Выйти(). Если вы пишете традиционный проект Silverlight, то НЕТ, нет возможности программно закрыть приложение. См. Также Запись в Peter Torr в журнале о выходе приложений Silverlight в Windows Phone 7. Там он также упоминает вариант бросания необработанного исключения, которое ИМО - ужасный стиль программирования.

Опция, которую вы можете попробовать, использует навигационную службу WP7 для программного перехода обратно из приложения. Не уверен, что это сработает. Зачем вам нужно выходить?

Ответ 2

Вы всегда можете вызвать exit, выполнив это на целевой странице, используя этот код, нажав кнопку возврата вашего приложения:

if (NavigationService.CanGoBack)
{
    while (NavigationService.RemoveBackEntry() != null)
    {
        NavigationService.RemoveBackEntry();
    }
}

Это приведет к удалению записей из стека, и вы нажмете кнопку "Назад", чтобы закрыть приложение без каких-либо исключений.

Ответ 3

Краткий ответ для Silverlight отсутствует.
Вы не должны предоставлять способ закрыть приложение. Закрытие аппликации должно быть выбором пользователя и реализовано с помощью кнопки "Назад" соответствующее количество раз. Это также требование к рынку.

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

Приложения XNA могут явно вызывать Exit().

Ответ 4

Некоторая полезная информация здесь уже есть. Добавление к этому..

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

Пользователь будет просто перемещаться по своему устройству, используя start, back и т.д.

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

.Exit(), хотя и доступный для xna, действительно больше не требуется. Во время CTP было требование к сертификату, в котором игры должны были предоставить кнопку выхода. Это уже не так.

В игровых приложениях никогда не было необходимости реализовывать это.

Чем больше обсуждался этот вопрос (и ему действительно дали хороший пробег по блоку), тем больше индикаторов для меня подсказывают, что нет необходимости кодировать выход.

Обновление:. Для тех, кто думает о необработанном исключении, как подходящем способе закрытия приложения намеренно или закрывает приложение из-за подпараметрических условий работы, я бы рекомендовал рассмотреть комментарии, касающиеся требований сертификации приложений в этот ответ. Есть ли способ программно выйти из моего приложения? (Windows Phone 7)

Ответ 5

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

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        base.OnBackKeyPress(e);
        e.Cancel = true;
    }

И вы можете указать пользователю нажать кнопку запуска для выхода из приложения.

Ответ 6

Добавьте ссылку на Microsoft.Xna.Framework.Game, затем вызовите:

new Microsoft.Xna.Framework.Game().Exit();

Ответ 7

private void PhoneApplicationPage_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)
{
    while (NavigationService.CanGoBack)   
        NavigationService.RemoveBackEntry();
}

Это работает для меня хорошо.

Ответ 8

Вы можете закрыть приложение, используя этот оператор

Application.Current.Terminate();

Ответ 9

Это отлично работало на телефоне Windows 7

 System.Reflection.Assembly asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
            asmb = System.Reflection.Assembly.Load("Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553");
            Type type = asmb.GetType("Microsoft.Xna.Framework.Game");
            object obj = type.GetConstructor(new Type[] { }).Invoke(new object[] { });
            type.GetMethod("Exit").Invoke(obj, new object[] { });

Ссылка - источник

Ответ 10

Мой 2 достоинства пенсов, причины выхода

1) при первом запуске нет промежуточного соединения, и ему нужно создать учетную запись в веб-службе где-нибудь, чтобы ее запустить.

2) Вам нужно принудительно обновить пользователя, снова привязав к веб-службе, вы можете обнаружить ошибку в своем приложении или изменить веб-сервис, что означает, что пользователь должен быть принудительно обновлен, при этом укажите, что вы хотите сообщить пользователю, что они должны обновиться, а затем выйти из приложения.

В настоящее время в моем приложении я вынужден забрать пользователя в форму, в которой говорится, что "они" должны выйти, и если они вернутся, они снова будут возвращены на эту страницу. не очень приятно.

Ответ 11

В Silverlight я бросаю исключение без обработки, когда мне нужно выйти из приложения. Я знаю, что это не грациозный способ справиться с этим, но это все же самое удобное и простое решение.

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

До сих пор этот метод всегда работал и никогда не подводил меня.

Ответ 12

Самый простой способ сделать это - добавить ссылку на Microsoft.Xna.Framework.Game, затем добавить с использованием Microsoft.Xna.Framework.GamerServices; перед пространством имен. Затем у нас есть кнопка в нашем примере .xaml с Click="quit_button". В выводе Example.xaml.cs мы помещаем этот код в наш класс page:

private void quit_Click(object sender, EventArgs e)
        {
            new Microsoft.Xna.Framework.Game().Exit();
            //This will close our app
        }

Ответ 13

 var buttonInfo = MessageBox.Show("Are you sure you want to exit?", "Exit", MessageBoxButton.OKCancel);
        if (buttonInfo == MessageBoxResult.OK)
        {
            if (NavigationService.CanGoBack)
            {
                while (NavigationService.RemoveBackEntry() != null)
                {
                       //
                }
            }
            e.Cancel = false;
        }
        else
        {
            //Stop page from navigating
            e.Cancel = true;
        }

Ответ 14

Перейдите в App.xaml.cs в своем браузере решений и добавьте статический метод в класс App

public static void Exit()
{
      App.Current.Terminate();
}

чтобы вы могли называть его в любом месте приложения, как показано ниже

App.Exit();