【问题标题】:OnSuspending event not triggered with UWP Windows 10UWP Windows 10 未触发 OnSuspending 事件
【发布时间】:2016-02-05 21:13:37
【问题描述】:

我的 UWP 应用不会触发 OnSuspending 事件,但此问题仅发生在运行 Windows 10 的 Windows Phone 上。在我的本地计算机或模拟器上将其作为 Windows 应用商店应用运行时,它按预期工作。

当应用程序关闭时,我正在使用此事件来保存我的应用程序的设置,但这显然会导致 windows phone 出现重大问题,因为未触发此事件。

如您所见,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 中运行。

【问题讨论】:

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


【解决方案1】:

来自官方App lifecycle documentation

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

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

【讨论】:

  • 嗨,感谢您澄清这一点并教我一些新东西! :) - 当我在没有调试器的情况下运行应用程序时,我确实注意到它实际上是在保存设置,所以 OnSuspending 事件以某种方式被触发,但你提供的正是我想要的!再次感谢。
  • 不客气,伙计!我前段时间遇到了同样的问题:)
猜你喜欢
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多