SuspensionManager Ошибка, когда приложение имеет более 1 страницы в приложении Windows 8 XAML/C#

Я пишу приложение для 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();
    }

Я зарегистрировал свой rootFrame с помощью SuspensionManager в методе OnLaunched в App.xaml.cs:

SuspensionManager.RegisterFrame(rootFrame, "AppFrame");

Итак, на первой странице моего приложения я переопределил метод SaveState. Это выглядит так:

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

        base.SaveState(pageState);
    }

Когда приложение приостанавливается, вызывается этот метод, и все работает нормально.

У меня есть 2-я страница с методом SaveState так же, как первая (так же, как и выше).

Когда я перехожу на 2-ю страницу с моей 1-й страницы и приостанавливаю приложение, ни один из методов SaveState не вызывается, и приложение вылетает со следующей ошибкой:

Сбой SuspensionManager: неизвестная ошибка

Brilliant!! Там не так много информации!

Итак, нужно ли мне делать что-то другое с SuspensionManager с несколькими страницами?

заранее спасибо

1 ответ

Менеджер SuspensionManager работает с несколькими страницами - никаких проблем. учитывая небольшой контекст, я бы предложил следующее:

  1. Вносили ли вы какие-либо изменения в обычные файлы, которые автоматически создаются при создании проекта против шаблона сетки? если да - попробуйте создать свежий проект.
  2. Вы передаете какой-либо параметр, который не является сериализуемым в вызове frame.navigate? это маловероятно, так как в этом случае - вы можете увидеть в окне вывода нечто подобное - информацию WinRT: GetNavigationState не поддерживает сериализацию типа параметра, который был передан в Frame.Navigate.
Другие вопросы по тегам