UWP Windows 10未触发OnSuspending事件

Thi*_*rry 4 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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();
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

更新1:

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

Rob*_*iel 12

从官方App生命周期文档:

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

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

在此输入图像描述