如何在WP8上使用cpp使用“Application.Current.Terminate”

时间:2013-04-12 16:30:28

标签: c++ windows-phone-8 terminate

我正在为Windows Phone 8编写没有XAML的C ++ DirectX应用程序。 我处理了后退键,因为我想在手动关闭应用程序, 但是我找不到cpp的API。

C#有官方API System.Windows.Application.Current.Terminate(), 但是cpp没有名称空间System::Windows::Application

我经常搜索,但我只能找到C#方法。 我试过了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();不是关闭的方式。 也许这只是一场崩溃。

//////////////////// update 2 /////////////

我找到了一个API

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

但是医生说

  

“关闭应用程序。请勿使用此方法在测试或调试方案之外关闭应用程序。”

所以我认为它不会通过测试。

////////////////////更新3 /////////////

如果使用     视窗:应用模型::核心:: CoreApplication ::退出(); 关闭应用程序然后如果我点击图标重新启动应用程序。这将需要非常长的时间才能开始。 可能是Windows :: ApplicationModel :: Core :: CoreApplication :: Exit()关闭一些系统服务。 但如果使用例外来关闭应用程序,则启动时间不会太长。

////////////////////更新4 /////////////

如果使用     视窗:应用模型::核心:: CoreApplication ::退出(); 在模拟器中,它无法通过再次单击图标重新启动应用程序

1 个答案:

答案 0 :(得分:0)

退出应用程序所需要做的就是跳出CoreApplication::Run while()循环。

例如,对于默认模板多维数据集DirectX示例应用程序,您需要做的就是将m_windowClosed成员变量设置为true。

因此,如果您希望在点按屏幕时结束该应用,请执行...

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

然而,正如评论所说,你必须小心处理后退按钮,否则你将失败证书。