如何在Window 8商店应用程序中获取ApplicationExecutionState.Terminated

时间:2013-03-08 10:21:11

标签: windows-8 windows-runtime winrt-xaml simulator application-lifecycle

我想模拟ApplicationExecutionState.Terminated州。

我正在做以下事项 1.启动应用程序
2.导航到桌面,等待App处于挂起状态
3.使用任务管理器中的“结束任务”终止应用程序。

此应用程序用于演示,之前是在Consumer预览版中。那时,上述步骤运作良好。

现在,在Windows 8 RTM中,使用上述步骤,ApplicationExecutionState将成为NotRunning

我想知道如何Terminated州?

我已经知道了以下几 1.通过使用模拟器,首先暂停应用程序,然后从模拟器注销 2.通过在窗口中施加内存压力。这样,应用程序将自动终止。问题是我不知道,如何施加记忆压力。

2 个答案:

答案 0 :(得分:1)

来自this Microsoft forum question

已终止表示该应用首先被暂停,然后用户会话正常结束。

要在调试器中模拟这个,您可以在模拟器中运行您的应用程序,然后触发暂停(Debug,Trigger Suspend)。然后你可以注销模拟器。然后,您可以在调试器中再次启动模拟器,并看到您遇到的情况是您来自之前的“已终止”状态。

或者,您可以使用winrt.codeplex.com

处提供的工具

[更新:2013-03-11 @ 11:02PST]

重要的是要理解在Windows 8 App Lifecycle中,ApplicationExecutionState枚举表示上次退出流程时应用程序的状态(通过多个对象'PreviousExecutionState属性)。

模拟此状态的唯一方法是暂停您的应用,注销并重新登录并重新启动应用,或者您可以通过使用/编写可能占用相当大一部分的应用来模拟负载下的系统可用的物理RAM,迫使Windows尝试通过强制终止暂停的应用来回收资源。

要压缩机器并消耗大量内存等,您可以使用Windows SDK中附带的consume.exe命令行应用程序或使用James McCaffrey's EatMem tool

答案 1 :(得分:1)

要在调试期间触发Suspend and shutdown以及其他进程生命周期管理事件,请使用Visual Studio中的Debug Location工具栏。在Process保管箱旁边有一个下拉按钮,其中包含上述命令:

Process lifecycle management commands

没有必要使用模拟器来实现这一点。您也可以在本地计算机上运行该应用程序。

您可以在this MSDN article的下拉按钮中阅读有关此内容和其他命令的更多信息。