gpt4 book ai didi

c# - 当应用程序在 Windows 8 XAML/C# 应用程序中有超过 1 个页面时出现 SuspensionManager 错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:58 25 4
gpt4 key购买 nike

我正在编写一个 Windows 8 XAML/C# 应用程序,但 session 管理器有点问题。

在我的 App.xaml.cs 中,我的 OnSuspending 方法如下所示:

    private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
await SuspensionManager.SaveAsync();
deferral.Complete();
}

我已经在 App.xaml.cs 的 OnLaunched 方法中使用 SuspensionManager 注册了我的 rootFrame:

SuspensionManager.RegisterFrame(rootFrame, "AppFrame");

因此,在我的应用程序的第一页中,我重写了 SaveState 方法。它看起来像这样:

    protected override void SaveState(Dictionary<string, object> pageState)
{
Save(true);

base.SaveState(pageState);
}

当应用程序挂起时,将调用此方法,一切正常。

我有一个第二页,其 SaveState 方法与第一页相同(如上)。

当我从第一个页面导航到第二个页面并暂停应用程序时,两个 SaveState 方法都没有被调用,应用程序崩溃并出现以下错误:

SuspensionManager 失败:未指定的错误

太棒了!!那里的信息不多!!

那么,我是否需要对具有多个页面的 SuspensionManager 执行任何不同的操作?

提前致谢

最佳答案

SuspensionManager 管理器可处理多个页面 - 没有问题。考虑到小背景,我建议如下:

  1. 您是否对创建 vs 项目时自动生成的通用文件进行了任何更改使用网格应用程序模板?如果是 - 尝试创建一个新项目。
  2. 您是否在 frame.navigate 调用中传递了任何不可序列化的参数?这不太可能,因为在那种情况下 - 您可以在输出窗口中看到类似这样的内容 - WinRT 信息:GetNavigationState 不支持传递给 Frame.Navigate 的参数类型的序列化。

关于c# - 当应用程序在 Windows 8 XAML/C# 应用程序中有超过 1 个页面时出现 SuspensionManager 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com