Как использовать «Application.Current.Terminate» с помощью cpp на WP8

Я пишу приложение DirectX на C++ без XAML для Windows Phone 8. Я обработал клавишу возврата, потому что хочу закрыть приложение вручную, но не нашел API для cpp.

C# имеет официальный API System.Windows.Application.Current.Terminate(), но cpp не имеет пространства имен System::Windows::Application.

Я много искал, но могу найти только метод С#. Я пробовал Windows::UI::Core::CoreWindow::GetForCurrentThread()->Close();
Он может закрыть приложение, но вызывает Platform::COMException, и его нельзя решить с помощью try-catch.

////////////////////обновление 1///////////////

ну я нахожу

int b = 0.1*10 - 1;
int a = 1/ b;

приложение тоже выйдет. так что Windows::UI::Core::CoreWindow::GetForCurrentThread()->Close(); не подходит для закрытия. может это просто авария.

////////////////////обновление 2//////////////

я нашел API

Windows::ApplicationModel::Core::CoreApplication::Exit();

но док говорит, что

«Завершает работу приложения. Не используйте этот метод для завершения работы приложения вне сценариев тестирования или отладки».

так что думаю тест не пройдет.

////////////////////обновление 3///////////////

если использовать Windows::ApplicationModel::Core::CoreApplication::Exit(); чтобы закрыть приложение. а затем, если я щелкну значок, чтобы перезапустить приложение. это будет стоить очень очень очень долго, чтобы начать. может быть Windows::ApplicationModel::Core::CoreApplication::Exit() закрыть какую-то системную службу. но если использовать исключение, чтобы закрыть приложение, его запуск не займет много времени.

////////////////////обновление 4//////////////

если использовать Windows::ApplicationModel::Core::CoreApplication::Exit(); в симуляторе он не может перезапустить приложение, снова щелкнув значок


person user2275219    schedule 12.04.2013    source источник
comment
ты не можешь. почему вы хотите, чтобы ваше приложение было прекращено?   -  person Daniel A. White    schedule 12.04.2013
comment
когда пользователь нажимает клавишу «Назад», я открываю диалоговое окно, чтобы убедиться.   -  person user2275219    schedule 13.04.2013


Ответы (1)


Все, что вам нужно сделать, чтобы выйти из приложения, это выйти из цикла CoreApplication::Run while().

Например, для примера приложения DirectX куба шаблона по умолчанию все, что вам нужно сделать, это установить для переменной-члена m_windowClosed значение true.

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

void PhoneDirect3DApp1::OnPointerPressed(CoreWindow^ sender, PointerEventArgs^ args)
{
    m_windowClosed = true;
}

Однако, как говорится в комментариях, вы должны позаботиться о том, чтобы правильно обращаться с кнопкой «Назад», иначе вы не получите сертификат.

person Paul Annetts    schedule 13.04.2013
comment
это полезно. Большое спасибо. Я много раз ищу в MSDN, чтобы завершить приложение, но забываю внимательно прочитать код. очень большое спасибо. - person user2275219; 13.04.2013