C# 芒果快速应用程序切换&;重处理崩溃

C# 芒果快速应用程序切换&;重处理崩溃,c#,.net,windows-phone-7,windows-phone-7.1,C#,.net,Windows Phone 7,Windows Phone 7.1,我有一个WP7应用程序,有时需要进行长时间(5-25秒)处理 对于Mango,当应用程序在处理时设置为休眠状态时(例如:用户按下Windows按钮或锁定屏幕),当用户返回时,应用程序崩溃 我在模拟器和我的设备上进行了尝试,同样的行为 如果我在VisualStudio的调试模式下复制它,它不会崩溃,所以很难找到真正发生的事情 要复制它,请启动一个新的Windows Phone项目,在MainPage.xaml上添加一个按钮&在执行无限循环的click事件上添加一个事件处理程序: while (tr

我有一个WP7应用程序,有时需要进行长时间(5-25秒)处理

对于Mango,当应用程序在处理时设置为休眠状态时(例如:用户按下Windows按钮或锁定屏幕),当用户返回时,应用程序崩溃

我在模拟器和我的设备上进行了尝试,同样的行为

如果我在VisualStudio的调试模式下复制它,它不会崩溃,所以很难找到真正发生的事情

要复制它,请启动一个新的Windows Phone项目,在MainPage.xaml上添加一个按钮&在执行无限循环的click事件上添加一个事件处理程序:

while (true)
{
    System.Threading.Thread.Sleep(100);
}
我的问题是:到底发生了什么?为什么会崩溃?快速切换应用程序不应该只是暂停应用程序进程并继续吗

编辑:
我注意到的另一件事是,在运行繁重的进程时,当我退出/进入应用程序时,停用和激活的事件似乎不会出现。

您的问题很简单。WP7不能真的让你的线程处于休眠状态,当你在这么快的时间里处于繁重的处理之下,它会保存一个损坏的状态。此状态将在其重新激活时崩溃

它在调试器中工作,因为调试器使一切都变慢,然后WP7有更多的时间

从文件:

在引发停用事件后,当用户向前导航离开应用程序时,操作系统将尝试将应用程序置于休眠状态。在这种状态下,应用程序的所有线程都将停止,不会进行任何处理,但应用程序在内存中保持不变。如果应用程序从此状态重新激活,则应用程序不需要重新创建任何状态,因为它已被保留


来源:

你的问题很简单。WP7不能真的让你的线程处于休眠状态,当你在这么快的时间里处于繁重的处理之下,它会保存一个损坏的状态。此状态将在其重新激活时崩溃

它在调试器中工作,因为调试器使一切都变慢,然后WP7有更多的时间

从文件:

在引发停用事件后,当用户向前导航离开应用程序时,操作系统将尝试将应用程序置于休眠状态。在这种状态下,应用程序的所有线程都将停止,不会进行任何处理,但应用程序在内存中保持不变。如果应用程序从此状态重新激活,则应用程序不需要重新创建任何状态,因为它已被保留


来源:

在官方Windows Phone论坛()上找到了答案。这是:

它崩溃的原因:

从应用程序被停用时起,它有整整十秒钟的时间 完成它正在做的事情。如果代码需要10秒以上, 操作系统将终止应用程序

为什么在我退出/进入应用程序时未引发停用和激活的事件:

如果进程正在阻止UI线程,那么这也会阻止消息 调度循环,所以我怀疑这就是为什么你的应用程序从来没有 获得检测和处理事件的机会


在官方Windows Phone论坛()上找到答案。这是:

它崩溃的原因:

从应用程序被停用时起,它有整整十秒钟的时间 完成它正在做的事情。如果代码需要10秒以上, 操作系统将终止应用程序

为什么在我退出/进入应用程序时未引发停用和激活的事件:

如果进程正在阻止UI线程,那么这也会阻止消息 调度循环,所以我怀疑这就是为什么你的应用程序从来没有 获得检测和处理事件的机会


您在哪里看到在重处理的情况下WP7不能将线程置于休眠状态?您在哪里看到在重处理的情况下WP7不能将线程置于休眠状态?