我在使用WinRT在Windows Phone 8.1上暂停事件时遇到问题,它不会触发。我不知道为什么。这是我的代码:
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
InitializeComponent();
Suspending += OnSuspending;
#if DEBUG
this.displayRequest = new DisplayRequest();
#endif
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">
/// The source of the suspend request.
/// </param>
/// <param name="e">
/// Details about the suspend request.
/// </param>
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
deferral.Complete();
}
我在行var deferral = e.SuspendingOperation.GetDeferral();
上设置了断点并使用Visual Studio对其进行了调试。然后我按下手机上的开始按钮并运行另一个应用程序,等待大约10秒钟。 OnSuspending
未运行。
有什么想法吗?
答案 0 :(得分:64)
暂停活动在您正在调试时不会被激活(但是在运行您的应用程序正常时,它会在您离开应用程序后立即启动),因为它也在this blog处说:
...即使你的应用程序来回切换屏幕,你也会永远等待这些触发!原因很简单:在调试应用程序时,Windows不会暂停它。
请注意,当 Suspending 事件出现问题时,这可能会导致一些奇怪的应用行为 - 例如,如果您在 Frame.Navigate 方法中传递了一些复杂的类并使用 SuspensionManager 。虽然调试你的应用程序可以正常工作(没有暂停),但会在没有调试模式的情况下崩溃。
要测试App的行为方式,您必须调用 暂停手册,打开(或设置可见)调试位置工具栏在Visual Studio中,你会找到一个下拉列表Lifecyce事件,选择 Suspend ,然后返回App - Resume 。