首页 > 代码库 > Windows Store App 中挂起时,程序奔溃的问题
Windows Store App 中挂起时,程序奔溃的问题
昨天在开发windows phone 8.1程序时,发现程序在挂起的时候,会自动退出。通过调试发现错误信息是
System.Runtime.InteropServices.COMException (0x80004005): Unspecified errorGetNavigationState doesn‘t support serialization of a parameter type which was passed to Frame.Navigate. at Windows.UI.Xaml.Controls.Frame.GetNavigationState() at TX.WifiSurfing.Common.SuspensionManager.SaveFrameNavigationState(Frame frame) at TX.WifiSurfing.Common.SuspensionManager.<SaveAsync>d__0.MoveNext()System.Collections.ListDictionaryInternal
意思是由于页面导航的参数不支持序列化,程序挂起时保存状态的时候出现了异常:
/// <summary> /// 在将要挂起应用程序执行时调用。 将保存应用程序状态 /// 将被终止还是恢复的情况下保存应用程序状态, /// 并让内存内容保持不变。 /// </summary> private async void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); await SuspensionManager.SaveAsync(); deferral.Complete(); }
但是我整个程序并没有在导航的时候传递对象,出现这问题很让我费解。通过查看异常页面的OnNavigatedTo方法,发现当我使用NavigateToPageAction导航的时候,如果Parameter不设置,程序会设置一个默认值,由于我是使用EventTriggerBehavior的Tapped事件触发的,Parameter被设置成了TappedRoutedEventArgs,这是一个不可序列化的对象,所以在挂起时保存状态的时候出现了错误。把它设置成Parameter=“ ”是一个解决方案(注:设置成Parameter=“”和Parameter=“{x:null}”都不可以,还是原来的默认值)。
SuspensionManagerErrorDemo.rar
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。