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 работает с несколькими страницами - никаких проблем. учитывая небольшой контекст, я бы предложил следующее:
- Вносили ли вы какие-либо изменения в обычные файлы, которые автоматически создаются при создании проекта против шаблона сетки? если да - попробуйте создать свежий проект.
- Вы передаете какой-либо параметр, который не является сериализуемым в вызове frame.navigate? это маловероятно, так как в этом случае - вы можете увидеть в окне вывода нечто подобное - информацию WinRT: GetNavigationState не поддерживает сериализацию типа параметра, который был передан в Frame.Navigate.