当应用程序在Windows 8 XAML / C#app中有超过1页时,SuspensionManager出错

时间:2013-04-05 08:56:35

标签: c# windows-8 winrt-xaml suspend

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

在我的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做任何不同的事情?

提前致谢

1 个答案:

答案 0 :(得分:2)

SuspensionManager管理器可以处理多个页面 - 没有问题。考虑到一点背景,我建议遵循:

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