UWP Windows 10未触发OnSuspending事件

时间:2016-02-05 21:13:38

标签: c# windows-phone windows-store-apps win-universal-app uwp

我的UWP应用程序未触发OnSuspending事件,但此问题仅发生在运行Windows 10的Windows Phone上。在我的本地计算机或模拟器上将其作为Windows应用商店应用运行时,它可以正常工作。

我正在使用此活动在应用关闭时保存我的应用设置,但这显然会导致Windows手机出现严重问题,因为此事件未触发。

如您所见,OnSuspending事件在应用启动时初始化

public App()
{
    Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(
        Microsoft.ApplicationInsights.WindowsCollectors.Metadata |
        Microsoft.ApplicationInsights.WindowsCollectors.Session);
    this.InitializeComponent();
    this.Suspending += OnSuspending;
}

以下是在Windows Phone 10中运行时应该调用的OnSuspending代码,但不是。

private async void OnSuspending(object sender, SuspendingEventArgs e)
{
    var deferral = e.SuspendingOperation.GetDeferral();

    //TODO: Save application state and stop any background activity
    await Locator.MainPageViewModel.SaveSettings();

    deferral.Complete();
}

关于如何解决这个问题的任何想法,还是有潜在的解决方法?

感谢。

UPDATE-1:

当我通过按住标志键并单击十字架以终止它来终止我的应用程序时,关闭应用程序但它仍然没有触发OnSuspending事件,但.net IDE仍然运行。当我按F5再次运行应用程序时,它会触发OnSuspending事件。我的应用程序启动但代码停止在IDE中运行。

1 个答案:

答案 0 :(得分:11)

来自官方App lifecycle documentation

  

有关使用Visual Studio进行调试的说明:Visual Studio阻止Windows挂起附加到调试器的应用程序。这是为了允许用户在应用程序运行时查看Visual Studio调试UI。在调试应用程序时,可以使用Visual Studio向其发送暂停事件。确保显示“调试位置”工具栏,然后单击“挂起”图标。

这意味着当您附加到Visual Studio调试器时,OnSuspending事件不会被触发。如果要调试它,请通过选择相应的生命周期事件手动发送事件。

enter image description here