Windows Store App 中挂起时,程序奔溃的问题_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Windows Store App 中挂起时,程序奔溃的问题

Windows Store App 中挂起时,程序奔溃的问题

 2014/8/6 15:38:10  Nomo  程序员俱乐部  我要评论(0)
  • 摘要:昨天在开发windowsphone8.1程序时,发现程序在挂起的时候,会自动退出。通过调试发现错误信息是System.Runtime.InteropServices.COMException(0x80004005):UnspecifiederrorGetNavigationStatedoesn'tsupportserializationofaparametertypewhichwaspassedtoFrame.Navigate.atWindows.UI.Xaml.Controls.Frame
  • 标签:程序 Windows 问题 APP

昨天在开发windows phone 8.1程序时,发现程序在挂起的时候,会自动退出。通过调试发现错误信息是

System.Runtime.InteropServices.COMException (0x80004005): Unspecified error

GetNavigationState 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

  • 相关文章
发表评论
用户名: 匿名