什么会导致异常发生在" TaskModel.Interop.Task.SaveTaskState"我该如何调试呢?

时间:2015-03-28 01:27:47

标签: c# windows-phone-8 windows-phone windows-phone-8.1

对于我的一个Windows Phone 8应用程序,我可以看到一个高崩溃计数,其中包含以下详细信息:

错误

  

国家储蓄失败。这很可能是由于国家不足   缓冲能力。应用程序需要[3289135]字节,可能超过   NavServer限制

堆栈跟踪

  

at Microsoft.Phone.TaskModel.Interop.Task.SaveTaskState()at   Microsoft.Phone.TaskModel.Interop.Task.FireOnPause(UInt32 reason);

显然这些是内部功能,但我不知道它们为什么会发生。我可以在网上找到这个例外的非常少的信息,除了保存和恢复状态似乎出现了。我正在遵循MSDN上的本指南中的方法来执行此操作:

https://msdn.microsoft.com/en-us/library/windows/apps/ff967548(v=vs.105).aspx

在MSDN论坛上也有一个类似的问题没有一个可靠的答案:

https://social.msdn.microsoft.com/Forums/windowsapps/en-US/74934801-8713-42be-9216-825cd0c09851/strange-0x87b20c05-exception?forum=wpdevelop

问题:有没有明显的理由说明为什么会发生这种异常,或者我可以尝试重现这种情况?

1 个答案:

答案 0 :(得分:0)

因此,在给出错误消息的情况下,最终答案相当明显:

  

应用程序需要[3289135]字节,这可能超过NavServer限制

基本上我从List加载IsolatedStorage,其中包含大量数据,当应用程序停用或开始在后台运行时,我的视图模型上的数据会保存到State

我通过使用属性List标记此[IgnoreDataMember]来解决此问题,因此我的大List不会保存到State。我只需重新加载List即可在OnNavigatedTo事件中显示。基本上,请确保视图模型中没有大量数据。就我而言,只有超过3MB的数据导致出现此错误。