暂停时应用程序崩溃

时间:2014-08-27 16:46:35

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

所以我遇到了一些奇怪的行为。

我是ViewModel的第一页。 ViewModel只包含一个ObservableCollection。 当我在第二页上导航时,一切似乎都很好。但是,当我暂停此页面上的应用程序时,应用程序崩溃了。长按后退按钮或Windows键。 奇怪的是,这只有在我没有调试时才会发生。当我调试时,一切工作都找不到。 Suspend-Resume完美无缺。

我可以在我的Lumia 920和仿真器上重现它。

我找到了造成这种行为的原因,但它实际上应该是一个原因。

当我离开时,我正在调用此方法

Frame.Navigate(typeof(SecondPage), FirstPageViewModel);  //names are fictive

奇怪行为的原因是ObservableCollection。如果我只是传递一个字符串对象,那很好。如果我创建一个本地List并传递它,它会在Suspending上崩溃。

我在想,我无法传递List对象,但这没有任何意义。 为什么它不会在Debugger中发生。是否有可能在某处以某种方式耗尽内存?

2 个答案:

答案 0 :(得分:3)

问题与调试模式无关,因为在调试the Suspending event is not raised时,所以你的应用程序运行正常。

为了更好地了解发生的情况,请手动调用暂停事件(请参阅上面链接中的答案)。然后,您将能够在调试模式下看到抛出异常(及其类型)的位置。

我不能说是什么导致问题(没有看到代码),但是你提供了一行可能很麻烦:

Frame.Navigate(typeof(SecondPage), FirstPageViewModel);

你在这里导航并传递一个对象,所以可能在某个地方你需要它。看一下,当你恢复你的应用程序时,页面会恢复,但你的对象通常不会。您必须使用一些 NavigationHelper 方法 - SaveState / LoadState 来保存/加载您传递的数据或自行处理。< / p>

答案 1 :(得分:1)

如果您正在使用内置SuspensionManager课程,则只能通过&#34;简单&#34; types(string,char,numeric,GUID)作为Frame.Navigate()的第二个参数。有关详细信息,请参阅documentation for Frame.Navigate